gpt4 book ai didi

c++ - 为什么使用 while(!input.eof()) 循环两次不起作用?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:27:17 24 4
gpt4 key购买 nike

<分区>

下面几行代码的目的是将输入文本文件中的每个单词(单词之间用换行符分隔)放入一个字符串 vector 中,然后将每个单词翻转过来,看看这个翻转后的单词是否是包含在输入文件的单词列表中。

我相信我的二进制搜索功能和 wordTurn 功能可以正常工作。我对我的代码做了几个简单的测试,我发现使用 while(!myFile.eof()) 循环两次可能是我的代码不工作的原因。不工作是指我将输出文件(“pairs.txt”)作为一个空文档(它应该是一个单词对列表)。

也就是说,当我在第二个 while(!myFile.eof()) 循环体中放入一些简单的打印代码时,它并没有被打印出来,由此我得出结论,这个循环没有到达。这更有可能,因为它是在我注释掉第一个 while(!myFile.eof()) 循环时打印的。我最初将第一个 while 循环放在 else 主体中,但这没有任何区别。

您认为问题是什么?我尝试将这两个循环体组合到第二个循环中,它在输出文件中产生了一些东西,但这不是这段代码应该做的,而且这在逻辑上是不正确的。

如有任何建议,我们将不胜感激。

int main(int argc, char* argv[]) {

vector<string> words;
ifstream myFile(argv[1]);
ofstream outputFile("pairs.txt");
string vocab;
string s;
int count;

while(!myFile.eof()) { //first while(!myFile.eof()) loop
getline(myFile, s);
words.push_back(s);
}

if(argc != 2) {
cout << "Usage: provide the name of one input file after the dictlookupHN executable file." << endl;
return (1);
}
else {
if(!myFile.is_open()) {
cerr << "Error: unable to open file " << argv[1] << endl;
return (1);
}
else {
while(!myFile.eof()) { //second while(!myFile.eof()) loop
getline(myFile, vocab);
string turnedWord = wordTurn(vocab);
if(binsearch(words, turnedWord) != "") {
outputFile << vocab << ":" << turnedWord << endl;
count++;
}
}
}

}
myFile.close();
outputFile.close();

return 0;
}

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com