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

标签 c++ filestream ifstream

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

代码如下...

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

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

最佳答案

In this case how can an object be evaluated to an integer?

申请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';
}

关于c++ - C++中的基本文件处理,EOF检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40364589/

相关文章:

javascript - 我如何访问我的项目中的 js 文件?

c# - 空闲文件流消耗的内存

c# - 通过我的服务器将文件从远程服务器复制到客户端浏览器,而不将整个文件写入磁盘或内存

c++ - 编译错误:ifstream::open 只接受引号 ""中的字符串值而不接受字符串变量

c++ - 用C++保存文件没有写入数据

c++ - cocos2d-x 和 box2d 链接错误

c++ - 这是否像 learncpp.com 声称的那样是 GCC 错误?

c++ - 错误 : expected ')' before '&' token

c++ - 在 Visual Studio 中使用命令行参数进行调试

c++ - 程序参数超过一定阈值时出现段错误