sstream用法
在g++中是不能使用itoa()的,即没有库函数实现数字向字符串的转化(至少我还不知道有这种库函数).
有时候需要数字字符串之间相互转化的时候,就比较郁闷了(我编程水平不高,又懒得写).
偶然一天发现stringstream可以方便的实现数字与字符串之间的转化,拿来跟大家分享一下.知道的就不用鄙视我了.
1)将数字转换成字符串(以下代码不再include跟main函数):
#include <sstream>
#include <iostream>
#include <string>
using namespace std;
int main()
{
//数字转换成字符串
int i = 12345;
string str;
stringstream stream;
stream << i;
stream >> str;
cout << str << endl;
double di = 0.123456; //double在我的机子上只能精确到6位
//超过以后结果不确定
stream.clear(); //记得要清空!!!
stream << di;
stream >> str;
cout << str << endl;
return 0;
}
结果为:
12345
0.123456
2)将字符串转化成数字:
str = "12345";
stream.clear();
stream << str;
stream >> i;
cout << i << endl;
double类型转换同理.
3)如果类型不匹配,进行隐式类型转换:
stream.clear();
i = 0;
str = "1.1";
stream << str;
stream >> i;
cout << i << endl;
结果为:
1
如果隐式类型转换不成功,并不会出错(这点做得很好!),不改变原来的值.比如:
stream.clear();
i = 0;
str = "abc";
stream << str;
stream >> i;
cout << i << endl;
结果为:
0
0为i在strem流转换之前的值.
sstream里面还有很多很多的东西,可我只学了一小点,还需要继续努力阿.