C++ 数字和字符串的转换

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 ゚)ノ,然后,学到新的方法会继续补充

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值