最近碰到这个问题,应该是老生常谈了,第一碰到这个问题应该是上C语言课上以及课本后面的习题,这次来复习一下。这个问题关键在于对ASCII码的了解。
首先简单复习一下什么是ASCII码,ASCII码是由美国国家标准学会制定的美国标准信息交换代码,是一种标准的单字节字符编码方案,用于基于文本的数据。
说白了,就是用数字来表示字符,毕竟计算机里存储的都是数字,没法直接存储字符,所以使用一些数字来表示字符,这就是ASCII码的作用。比如字符0,ASCII码为48(十进制);大写字母A的ASCII码为65(十进制),可以观察到大写字母比小写字母小32(十进制,记住这个数字)。ASCII码一共有128个,下面列举了其中的一部分:
1、字符型数字数值型数字
以‘1‘转换成1为例,字符型数字在计算机中以ASCII码值存放(二进制表示的49)来存储,数字型数字在计算机中是以二进制的1来存储,所以将字符型数字转换成数字型数字,需要减去48,即减去字符’0‘(ASCII码值为48),即’1‘-’0‘转换成了数字1。相反也是同样的道理,数字1加上48就变成了字符型数字,即1+’0‘转换成了字符型数字’1‘。
//数值型数字转换成字符型数字
#include<iostream>
using namespace std;
int main() {
int num = 12345;
string str;//定义字符串
for(int i=0;i<5;i++){
str.insert(0,1,num % 10 + '0');// 整数转字符串: +'0'
num = num / 10;
}
cout << str<<endl;
system("PAUSE");
return 0;
}
#include<iostream>
using namespace std;
int main() {
string str="12345";//定义字符串
int num = 0;
for(int i=0;i<5;i++){
num = num * 10 + (str[i] - '0');//str[i] - '0'字符转换成数字
}
cout << num<<endl;
system("PAUSE");
return 0;
}
2、字母大小写转换
前文中提到大写字母比小写字母的ASCII码小32,所以将大写字母转换成小写字母时,只要加上32即可。
#include<iostream>
using namespace std;
int main() {
char ch='A';
ch = ch + 32;
cout << ch<<endl;
system("PAUSE");
return 0;
}