基本文件C ++中的处理,EOF检测

时间:2016-11-01 16:44:29

标签: c++ filestream ifstream

我正在阅读一本关于C ++的入门书。 其中有一个关于打开文件的示例程序。

代码如下......

    #include<iostream.h>
#include<fstream.h>
void main()
{
    ifstream fin;
    fin.open("country");
    while(fin)
    {
         ....
         .....
    }
}

这是我的疑问。 在作者所说的代码中,如果文件操作中存在任何错误(包括文件结束条件),则fin将评估为0.在这种情况下,如何将对象评估为整数(即​​0.或者一些 - 零)?

1 个答案:

答案 0 :(得分:2)

  

在这种情况下,如何将对象计算为整数?

应用operator bool

请注意

    while(fin)

不常见。相反,它应该与输入操作一起使用。然后测试是否测试输入操作是否成功。例如,参见链接的示例。

#include <iostream>
#include <sstream>

int main()
{
    std::istringstream s("1 2 3 error");
    int n;
    std::cout << std::boolalpha << "(bool)s is " << (bool)s << '\n';
    while (s >> n) {  // Is read successful?
        std::cout << n << '\n';
    }
    std::cout << std::boolalpha << "(bool)s is " << (bool)s << '\n';
}