C++ 字符串大小写转换

不用系统函数,用string定义字符串怎么转换?

第1个回答  2010-01-21
/*
**VC++6.0编译通过
**原理:对字符串中每个字符进行判断,
**如果是大写字母,则ASCII码加上32(即为对应小写字母),
**如果是小写字母,则ASCII码减去32(即为对应大写字母)。
**至于32这个数,你可以通过查ASCII码表得知大小写字母的这一关系。
*/

#include<iostream>
#include<string>
using namespace std;

void main()
{
int i;
string str;
cin>>str;
for(i=0;str[i]!='\0';i++)
{
if(str[i]>='A'&&str[i]<='Z')
{
str[i] += 32;
continue;
}
if(str[i]>='a'&&str[i]<='z')
{
str[i] -= 32;
continue;
}
}
cout<<str;
}本回答被提问者采纳
第2个回答  2010-01-21
比如:
string str = "test";
char *p = str.c_str();

while (*p) {
upper(*p++);
}

就可以了。
第3个回答  2010-01-21
#include <iostream>
#include <cctype>
#include <string>

int main()
{
using namespace std;
string str="xing";
for (size_t i = 0; i < str.length(); ++i)
{
str[i]=toupper(str[i]);
//if('a' <= str[i] && 'z' >= str[i])
//str[i] = str[i] + 'A' - 'a';
}
cout<<str;
}
第4个回答  2010-01-21
用map定义一个转换表

map<char, char> mapData;

小转大

mapData['a'] = 'A';
...
mapData['z'] = 'Z';

把string s遍历一下,去单个字符c

if(c > 'a' && c < 'z') {
// 替换内容
// c = mapData[c];
}

大转小同理
相似回答