请教stringstream的用法~

coolgarfield 2002-12-03 10:03:49
请看一下一个输入文件:

1 2 3 45 63 54 78 1
12 56 47
11 748 92 33 4
145 23

我试图把他们按行读出并且对每一行的证书进行计数,按行输出每一行的整数个数:

8
3
5
2

于是,我想用一个getline(),将一整行读入一个字符串,然后将其作为一个istringstream,然后再从这个流中读取整数并计数,读完一行,清空istringstream,重新指向新的字符串,继续执行读取和计数:

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>

using namespace std;

int main()
{
string linebuf;
ifstream fin("test.in",ios_base::in);

while(getline(fin,linebuf)){
istringstream iss;
iss.str(linebuf); //是应该这么写吗?
int d,i=0;
while(iss>>d)
i++;
cout<<i<<endl;
}

return 0;
}

不知道这样写对不对,是不是符合使用的规范~

对stringstream不是很熟,希望高手讲解~!
...全文
53 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dsangvei 2002-12-05
  • 打赏
  • 举报
回复
iss.flush();
iss.str(linebuf);
陈硕 2002-12-03
  • 打赏
  • 举报
回复
What?

你试试再说。
coolgarfield 2002-12-03
  • 打赏
  • 举报
回复
楼上的哥们,因为每次都要跟新字符串流中的字符串,这么写,只怕只能初始化一回吧?

虽然作用宇和可见性是限制在while中的,但是,iss对象却是初始化一回以后,一直存在的呀!
陈硕 2002-12-03
  • 打赏
  • 举报
回复
istringstream iss;
iss.str(linebuf);
可改为
istringstream iss(linebuf);
陈硕 2002-12-03
  • 打赏
  • 举报
回复
The C++ Standard Library 第13章

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧