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里面还有很多很多的东西,可我只学了一小点,还需要继续努力阿.
posted @ 2018-04-11 06:47  MCQ  阅读(788)  评论(0编辑  收藏  举报