如何在文件结束之前(或结束之前)读入字符?

时间:2016-03-12 00:18:37

标签: c++ ifstream

我需要做什么:

一次读取名为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。

然而,当我打印它时,打印失败两次。任何帮助表示赞赏

1 个答案:

答案 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 != '\'');