我正在嘗試使用字符串編寫程序,以確定文件中的某個單詞是否有連續兩個相同的字母。我寫了一個函數來進行:連續編程的C++相同字母
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;'之前,您應該測試讀取是否成功。 – user2079303 2014-12-03 00:48:01
是的,我有,如果文件沒有打開,程序終止。 – imdabes 2014-12-03 00:53:55
即使在打開文件後(例如,達到eof時),讀取文件也可能失敗。您應該在每次從流中讀取之後測試結果。 – user2079303 2014-12-03 01:00:29