首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确读取文本文件

正确读取文本文件
EN

Stack Overflow用户
提问于 2014-10-31 23:54:07
回答 3查看 96关注 0票数 0

我从文本文件中的一行读取字符串,由于某种原因,代码将不会读取整个文本文件。它读到某个随机点,然后停下来,从一行或几行中删除几个单词。这是我的密码。

代码语言:javascript
复制
string total;
 while(file >> word){
    if(total.size() <= 40){
        total +=  ' ' + word;
    }
    else{
        my_vector.push_back(total);
        total.clear();
    }

下面是一个文件的示例

该项目证明,所有营养补充剂和/或成分的知情体育标志已被世界一流的体育反兴奋剂实验室,LGC检测禁用物质。选择使用补充剂的运动员可以使用上面的搜索功能来寻找经过严格认证程序的产品。

它读到“通过”,并遗漏了最后四个词。

我希望输出是整个文件。不仅仅是其中的一部分。我就是这样印出矢量的。

代码语言:javascript
复制
for(int x = 0; x< my_vector.size(); ++x){
    cout << my_vector[x];
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-01 02:47:20

你错过了两件事:

第一:万一total.size() is not <= 40 i.e >40移动到其他部分,您只需更新my_vector,而忽略从文件中读取的word中的当前数据。实际上,您需要在total之后更新total.clear()

第二:当您的循环结束时,您也会忽略word中的数据。您需要考虑向量中的push_back()(如果是req,则取决于您的程序逻辑)。

所以总的来说你的代码会是这样的。

代码语言:javascript
复制
string total;
while(file >> word)
{
    if(total.size() <= 40)
    {
        total +=  ' ' + word;
    }
    else
    {
        my_vector.push_back(total);
        total.clear();
        total +=  ' ' + word;
    }
}
my_vector.push_back(total);//this step depends on your logic 
                           //that what u actually want to do
票数 3
EN

Stack Overflow用户

发布于 2014-11-01 01:10:32

当读取文件结束时,循环就结束了。然而,此时您仍然拥有total中的数据。在循环后添加类似的内容:

代码语言:javascript
复制
if(!total.empty()) {
    my_vector.push_back(total);
}

将最后一个位添加到向量中。

票数 0
EN

Stack Overflow用户

发布于 2014-11-01 01:41:06

有两个问题:

  1. 40 < total.size()只将total推送到my_vector时,而当前word则没有。您可能应该无条件地将这个单词附加到total,然后再添加到my_vector.push_back(total) if 40 < total.size()
  2. 当循环结束时,您仍然需要push_back() total的内容,因为它可能还没有达到40的大小。也就是说,如果total在循环结束后为空,则仍然需要将其附加到my_vector中。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26684987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档