gpt4 book ai didi

c++ - 使用 if 流读取简单的 c++ 文件

转载 作者:行者123 更新时间:2023-11-30 03:49:54 26 4
gpt4 key购买 nike

我似乎无法让这个简单的代码工作。我想打开一个文本文件并使用此函数将每一行与一个词进行比较:

ifstream ifs("wordsEn.txt");

bool findword (string word)
{
string currentword="";

if (!ifs.is_open()) {
cout << "error" <<endl;
return false;
}

while(getline(ifs, currentword)) {
if (currentword == word) {
cout<< "true" <<endl;
return true;
}
}

return false;
}

虽然这应该有效,但此函数永远不会返回 true。我知道这是非常基本的,但我找不到我的错误

最佳答案

while 中的条件替换为

while (ifs >> currentword)

它应该可以工作。正如你现在所做的那样,你正在阅读整行,而不是逐字逐句。如果要逐行阅读,需要进一步tokenize each line (使用例如 std::istringstream)。

EDIT 1 即使您的文件中每行只有一个单词,您也必须绝对确保在它之前/之后没有任何额外的空格,因为如果您这样做,则字符串将类似于“word”,而不是“word”。这就是直接使用提取运算符更安全的原因,因为默认情况下它会跳过空格。

编辑 2 编写搜索函数的现代 C++ 方式看起来更像

bool findword (const std::string& word) {
std::istream_iterator<std::string> it_beg(ifs); // need to #include <iterator>
std::istream_iterator<std::string> it_end{};
return (std::find(it_beg, it_end, word) != it_end); // need to #include <algorithm>
}

关于c++ - 使用 if 流读取简单的 c++ 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32171739/

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