【发布时间】:2014-12-03 00:42:24
【问题描述】:
我正在尝试使用字符串编写程序来确定文件中的单词是否连续包含两个相同的字母。我为此编写了一个函数:
bool likeornot(apstring word)
{
for (int i = 0; i < word.length(); i++)
{
if (toupper(word[i]) != toupper(word[i + 1]))
return false;
}
return true;
}
主代码:
while(!fin.eof())
{
fin >> word;
if (likeornot(word))
cout << "I like " << word << "." << endl;
else
cout << "I don't like " << word << "." << endl;
}
fin.close();
这总是返回 false 并告诉我它不喜欢任何单词,如果有人能帮我弄清楚为什么那会很棒。
【问题讨论】:
-
你应该在使用
fin >> word;之后的值之前测试读取是否成功。 -
是的,我知道了,如果文件没有打开,程序就会终止。
-
即使在打开文件后(例如,达到 eof 时)读取文件也可能失败。您应该在每次从流中读取后测试结果。