第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];
}
大转小同理