由一段代码说开去——sscanf与string

 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()函数;

 

你可能感兴趣的:(String)