码迷,mamicode.com
首页 > 编程语言 > 详细

C++ code:string stream(string流)

时间:2018-05-11 12:51:20      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:http   可读性   cin   ret   names   空格   color   int   一个输入流   

如果有一个文件aaa.txt,有若干行,不知道每行中含有几个整数,要编程输出每行的整数之和,该如何实现?

由于cin>>不能辨别空格与回车的差异,因此只能用getline的方式逐行读入数据到string变量中,但在string变量中分离若干个整数还是稍显吃力。一个好的方法是用string流:

技术分享图片

 1 #include<iostream>
 2 #include<sstream>
 3 #include<fstream>
 4 using namespace std;
 5 int main()
 6 {
 7     ifstream in("aaa.txt");
 8     for (string s; getline(in, s);)
 9     {
10         int a, sum = 0;
11         for (istringstream sin(s); sin >> a; sum += a);
12         cout << sum << endl;
13     }
14     cin.get();
15     return 0;
16 }

讲道理,该程序编得有些放肆。本该将istringstream sin(s)单独占一行,结果非但不然,还将sum+=a都缩到循环结构描述的步长部分中去了。这样一来,循环体便为空了,于是,for循环的描述部分后面加上分号便自成独立的语句,但它确实能够完成累计工作。作为单独的循环,最后的“;”还是不能忘记的!!因为程序小,所以可读性还不到受伤害的地步,请读者来见识一下着这种风格。

istringstream是输入string流,它在sstream头文件中说明。该语句类似文件流操作,只不过创建sin流时,其参数为string对象。它是将string的实体看作是一个输入流,因而,sin>>a即是从string流中输入整数到a中,输啊输,一直输到string中的最后一个整数!

string流很有用,有时候要将内容逐个输出到string中,最后才根据计算结果来编排输出格式。这时候,用string流就很管用。

C++ code:string stream(string流)

标签:http   可读性   cin   ret   names   空格   color   int   一个输入流   

原文地址:https://www.cnblogs.com/ariel-dreamland/p/9023386.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!