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

时间:2017-10-17 15:46:40

标签: c++

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

问题在于我正在尝试将句子首先输出到中间文件中,然后使用提取运算符逐个获取单词以查看它是否包含单词。如果是,则将句子输出到outMatch文件中。在调试时我发现句子变量逐个接收所有句子,但sentMore变量总是提取出文件的第一个句子,所以它无法测试其余的句子。我似乎无法解决这个问题。非常感谢帮助。

P.S。我真的不希望答案充实,只是在正确的方向上轻推或提示。

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++;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

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

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

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