由一段代码说开去——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()函数;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值