我需要做什么:
一次读取名为textFile
一个字符ch
的ifstream类型的文本文件,直到ch
等于单个引号'
。如果ch永远不等于引号,则打印失败并退出循环。
//read a character from the file into ch;
textFile.get(ch);
// while ch is not a single quote
while (ch != '\'')
{
//read in another character
textFile.get(c);
if (textFile.peek(), textFile.eof())
{
cout << "FAIL";
break;
}
}
我正在阅读的textFile.txt没有单引号,因此输出应为FAIL。
然而,当我打印它时,打印失败两次。任何帮助表示赞赏
答案 0 :(得分:0)
ifstream::get(char& c)
将返回用于读取的ifstream
对象,并且可以将其用作检查读取是否成功的条件。使用它。
您的代码应该是这样的:
char c, ch;
// while ch is not a single quote
do
{
//read in another character
// you can use ch directly here and remove the assignment ch = c; below if you want
if(!textFile.get(c))
{
cout << "FAIL";
break;
}
ch = c;
} while(ch != '\'');