| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2562 人关注过本帖
标题:怎么转换大小写?
只看楼主 加入收藏
鼻涕龙
Rank: 1
等 级:新手上路
帖 子:22
专家分:8
注 册:2010-6-3
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:8 
怎么转换大小写?
程序代码:
#include <iostream>
#include <cctype>
#include <string>
using namespace std;
void main()
{
    string str ;
    string words;
    cout<<"please input string"<<endl;
    std::getline(cin,str);

    cout <<"please input words"<<endl;
    cin>>words;
   
    size_t wordsLength = words.length();
    size_t pos ;
    for (size_t i = 0 ; i<str.length() ; i=pos + wordsLength)
    {
        pos = str.find(words,i);
        if (pos == string::npos)
        {
            break;
        }
        if (pos == 0)
        {
            str.replace(pos,wordsLength,wordsLength,'*');
        }
        size_t prepos  = pos -1;
        size_t lasrpos = pos+wordsLength+1;
       
        if ((prepos,1," ") == 0&&(lasrpos,1," "))
        {
            str.replace(pos,wordsLength,wordsLength,'*');
        }   
    }
    cout<<str<<endl;
}
目的就是在一个指定的字符串中替换制定单词为***。现在我想进行一下大小写转换。比如str=“What your name”,你要替换的单词输入时是words=what(这里的w是小写的),这样也能替换成功。或者更复杂点,比如str=“WHAT your name”,words=what(都是小写),这样也能替换WHAT为****。
在上面的基础上怎么修改?
搜索更多相关主题的帖子: color 
2011-02-01 22:07
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:3 
有一篇文章介绍相关主题的,但内容涉及的比较深。如果有兴趣可以研究一下。
http://www.
2011-02-02 00:19
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:3 
将字母的ASCII码加减32就可以
2011-02-02 08:09
鼻涕龙
Rank: 1
等 级:新手上路
帖 子:22
专家分:8
注 册:2010-6-3
收藏
得分:0 
如果用ASCII码,我怎么判断输入字符串的每个字符是大写还是小写?并且是不是要替换单词中的大写字符?我只想让输入的单词不分区大小写,其他的还是区分大写的。并且替换必须是整个单词 而不是包含关系。
如:str = “What yOUr Name Our”, words = “our”,结果就是“What yOUr Name ***”
2011-02-02 10:19
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
加减 32 还不如用 toupper tolower 这两个库函数的扩展性好。那篇文章里提了用这两个函数有什么要注意的。

其实有的编译器可能提供了 stricmp (或者 strcmpi) 来支持忽略大小写的比较字符串。但这两个不是标准函数。而且不知道是不是有什么危害,好像不是很提倡用。
2011-02-02 10:42
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
用 isupper 可以判断一个字符是不是大写。

你那就是各种情况比较复杂,编字符串的函数要的就是细心,没什么现成的方法。
2011-02-02 10:44
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:3 
如果字符串的内容全部都是英文字母的话,可以用这个char a,b; (a-b)%32

迭代的是人,递归的是神。
2011-02-02 10:55
迷失的木桶
Rank: 4
等 级:业余侠客
帖 子:52
专家分:230
注 册:2010-5-29
收藏
得分:0 
观察Acii表可以发现 大写字母和小写字母相差32,在二进制来看32,在第六位上是1。因此使用位或就可以转换大写字母到小写字母。A|32=a,反过来 a|32=a。
2011-02-06 13:49
gsdgold
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-6-9
收藏
得分:0 
用 toupper和 tolower库函数
2011-02-28 23:16
快速回复:怎么转换大小写?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017138 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved