从文件 c++ 读取和写入的循环问题

Posted

技术标签:

【中文标题】从文件 c++ 读取和写入的循环问题【英文标题】:Issue in Loop with Reading and Writing from File c++ 【发布时间】:2017-10-17 15:46:40 【问题描述】:

我遇到的问题是,在下面的循环中,我试图从输入文件 (inSentences) 中逐句读取句子,如果它包含某个单词,则将其输出到另一个文件 (outMatch) 中。我不允许使用除 .at() 和 .size() 之外的任何字符串函数。

问题出在我试图先将句子输出到一个中间文件中,然后使用提取操作符一个一个地获取单词,看是否有单词。如果是,它将句子输出到 outMatch 文件中。调试的时候发现sentence变量一个一个接收所有的句子,但是sentMore变量总是提取文件的第一个句子,所以无法测试剩下的句子。我似乎无法修复这个错误。帮助将不胜感激。

附:我真的不希望答案充实,只是轻推或朝正确方向提供线索。

outMatch.open("match");
outTemp.open("temp");

while(getline(inSentences, sentence, '.'))

    outTemp << sentence;
    outTemp.close();
    inTemp.open("temp");

    while(inTemp >> sentMore)

        if(sentMore == word)

            cout << sentence << "." << endl;
            inTemp.close();
            sentCount++;
        
    

【问题讨论】:

不要使用“中间文件”,而是使用string streams 【参考方案1】:

你应该使用字符串流!您现在的问题似乎是您永远不会重新打开outTemp,因此在第一个循环之后,您在关闭它之后尝试写入它。但是你可以通过切换到字符串流来避免所有这些问题!

由于您不想要完整的解决方案,因此示例可能如下所示:

string line_of_text, word;
istringstream strm(line_of_text);
while(strm >> word) 
    cout << word << ' ';

【讨论】:

这是一个字符串函数还是在不同的库中?我不确定我是否可以按照我的项目指南使用它,不允许使用除 .at 和 .size 之外的字符串函数。 @KaranveerSingh 这是一个完整的库。一定要#include &lt;stringstream&gt;

以上是关于从文件 c++ 读取和写入的循环问题的主要内容,如果未能解决你的问题,请参考以下文章

向/从映射文件 C++ 写入和读取

c++和c#之间的共享内存同步

从套接字读取并写入文件 C++

C++ 如何将一个文件里的数据写入到另一个文件里?

关于c++文件流读入和写入的问题

如何在同一循环中“从 .csv 读取并写入 excel”