字符流的一个问题

    今天遇到的一个问题是:我希望从一个文件中读出每一行,再处理每行由空格隔开的各个部分。

具体来说,就是有这样的一些记录:

                   北京 邮政 招聘

                   邮局 可以 邮寄 光盘 吗

                  ...................

    要对"北京"、"邮政"、"招聘"等单独处理。

    要读入一行,当然c++的解决办法是

                    std::ifstream record;

                    ……//判断打开

                    record.getline(buffer, sizeof(buffer));

    关键是接下来怎么作。最初的想法是把buffer直接转成string类型的,然后用string的切割函数分割之,再…….。但是觉得麻烦,最终终于找到解决方案——利用标准库中的istringstream这个类。Istringstream类的头文件是<sstream>。使用方法很简单,如下

                  std::istringstream input(buffer);//接上面

                  std::string s;

                  while( !input.eof()){//这里的结束和文件流表面上来没什么区别

                        input>>s;

                  }

    这样基本解决,但是又遇到了另一个问题:我不知道每行被分成几份,因此在使用循环的时候不知道终止条件。解决了!所有流都有着一样的结束判断条件eof()。

posted on 2009-06-01 19:50 知白守黑 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/zbsh/archive/2009/06/01/1493978.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值