1 #include <iostream> 2 #include <sstream>//大概是字符串流 3 #include <string> 4 using namespace std; 5 6 //c++方法 将double数值 转换成string对象 7 string convertToString(double x) 8 { 9 ostringstream o; 10 if(o<<x)//将x作为string流入o //很像c语言里面的sprintf 11 return o.str();//将o中的值转换成string对象 12 else 13 return "conversion error";//o读取x失败 14 } 15 16 //c++方法 将string对象转换成double数值; 17 double convertFromString(string & s) 18 { 19 istringstream is(s); 20 double x; 21 if(is>>x)//很像c语言里面的sscanf 从流中第一个字符开始分流出一个double 22 return x; 23 else 24 return 0.0; 25 } 26 int main() 27 { 28 string a,e; 29 char b[10]; 30 int c=2013; 31 double d=3.1415; 32 /*c方法将数值转换成string*/ 33 sprintf(b,"%d",c); 34 a=b; 35 cout<<a<<endl; 36 /*c++方法将数值转换成string*/ 37 e=convertToString(d); 38 cout<<e<<endl; 39 /*c方法从string中分离出数值*/ 40 a+="good"; 41 c=-1;//确保下一个输出是从a中获得的值 42 sscanf(a.c_str(),"%d%*s",&c); 43 cout<<c<<endl; 44 /*c++方法从string中分离一个double值*/ 45 e+="ok";//这样能够考察一下是否是分离 46 d=-1; 47 d=convertFromString(e); 48 cout<<d<<endl; 49 return 0; 50 }
1.sscanf(char * str,"格式符",...)函数和sprintf(char *str,"格式符",...)是c语言里面两个不错的函数 理解起来对流的理解有帮助 sscanf()就是从第一个参数字符串中按照转换符分离成不同的字段(存储在不同的内存里) 这样听起来就像是输入流了 sprintf()呢 就是把
字段放进str里面
2.c++的sstream 说实话我在书上面没有翻到过 不过在头文件里确实见过 这个应该是string stream 有两个类:istringstream 字符串输入流 >> ostringstream 输出流<< 这两个可以构造函数来取代c里面的 sscanf()和sprintf()函数;