1.减‘0’
#include<iostream>
#include<string>
using namespace std;
int main(){
string s;
while(cin>>s){
int sum=0;
for(int i=0;i<s.size();i++){
sum=sum*10+(s[i]-'0'); //!!!
}
cout<<"s由字符串转换为数字:"<<sum<<endl;
}
return 0;
}
字符减’0’可以到相应的整数 原因
字符型常量在计算机中都以ASCII表示,所以用 ‘ ’ 括起来。举个栗子 ‘1’–>1:在ASCII中,‘1’对应编码是49的二进制码,数字1就是1的二进制码,所以字符转换为数字(字符‘1’,即49的二进制–>数字1对应的二进制1),就用49-48=1。在ASCII码中‘0’对应的刚好是48的二进制码,所以我们转换的时候只需要‘1’-‘0’=1就可以了。数字的ASCII码是按顺序规定的。所以其它字符要转换成数字都可以用减‘0’来表示。
衍生:大小写字母的转换:先看ASCII码:a–z是97–122的二进制,而A–Z是65–90的二进制编码,于是我们就得出:大写字母=小写字母-32 。32也可换空格 ‘ ’,因为空格的ASCII码是32对应的二进制编码。
2、字符串流 stringstream
#include<iostream>
#include<sstream> //头文件
using namespace std;
int main(){
string s;
int n;
stringstream ss; //定义流ss
while(cin>>s){
ss.clear(); //多次输入,每次转换注意清空
ss<<s; //向流中传值,将字符串s传入流ss
ss>>n; //向n中输入值,,将流ss的值传给n
cout<<"字符串:"<<s<<endl;
cout<<"转换为数字:"<<n<<endl;
}
return 0;
}
这个还没学过,暂时不做解释,先记一下用法。
“<<” 插入器,输出
“>>" 提取器,输入
衍生:同样可以用字符串流实现数字转字符串
简易版示例(。^▽^)
//将数字n转化成字符串
int main(){
int n=123;
string s;
stringstream ss;
ss<<n;
ss>>s;
cout<<s<<endl;
}
ps:并不完全是原创,参考了一些博主的文章,看了蛮多的就不一一列举啦,不要举报我抄袭吖(o゚v ゚)ノ,然后,学到新的方法会继续补充