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

标签 c++

我遇到的问题是,在下面的循环中,我试图从输入文件 (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++;
        }
    }
}

最佳答案

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

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

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

关于c++ - 从文件 c++ 读取和写入的循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46794131/

相关文章:

c++ - 将类的对象返回到主程序

c++ - 替换 chrono::time_point 的小时?

c++ - 使用 C++ randint 生成四位数字

c++ - 链接列表问题,

c++ - 将关键事件发送到 Qt QML WebEngineView

c++ - 有没有我可以使用 opengl 3+ 的虚拟机? virtualbox 和 vmware 没有

c++ - 为什么合并的上限和下限比较总是评估为真?

c++ - 是否有可能打印迭代器指向的类的名称?

c++ - 使用 shared_ptr 时奇怪的双析构函数调用

c# - 64 位进程 Vista 中的 64 位 dll 失败 - 无法加载 DLL 'dllname' : The specified module could not be found