【问题标题】:C++ ifstream and getlineC++ ifstream 和 getline
【发布时间】:2018-08-02 07:02:25
【问题描述】:

我正在使用旧的 gcc 编译器,如果这很重要的话(在 C++11 之前)。

我有一个函数,代码如下:

ifstream in(file);
string line;
while (std::getline(in, line))
{

}

我只是想确保:

  1. 我不需要检查文件是否真的存在,对吧? getline 知道处理这个吗?

  2. 最后不用因为RAII关流了吧?

【问题讨论】:

  • 你可以在网上找到很多例子。你检查过这些吗?
  • @mfromla 我做了,看到人们关闭了流,还检查了故障位,我看不出这是什么原因,所以想确定一下。
  • @Musmus 网上有很多坏代码。
  • 是的,如果流未打开,getline 不会安全地执行任何操作。

标签: c++ ifstream getline


【解决方案1】:

您可以在 C++ 参考网站here 中查看给出的示例。

对于它的不同版本都有解释,比如 C++98 和 C++11。

至于答案:

  1. getline() 将失败,如果事先无法打开文件,您的代码将不会进入while 循环。

  2. 正如你所说,你不需要因为 RAII 而关闭文件。

【讨论】:

    【解决方案2】:

    如果文件不存在,显然getline会失败,你不会进入while循环。

    您不需要关闭流。

    【讨论】:

      猜你喜欢
      • 2011-06-09
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多