使用std:ofstream进行文件内容复制时请检查文件副本。

3

我正在尝试更新一些代码,并使用std::ofstream更改fopen()文件操作。 在fopen文件操作期间,使用fputs()写入内容到文件中。 检查fputs的返回值:(fputs()成功时返回非负数,出错时返回EOF)。 我需要检查内容是否被复制到文件中。

此示例来自:cplusplus.com

// ofstream::open / ofstream::close
#include <fstream>      // std::ofstream



int main () {

  std::ofstream ofs;
  ofs.open ("test.txt", std::ofstream::out | std::ofstream::app);

  ofs << " more lorem ipsum";

  ofs.close();

  return 0;
}

我正在尝试找到一种检查 ofs << " more lorem ipsum"; 操作的方法。这个操作会有什么返回值吗?它是否会抛出异常?

最热情的问候。


您不需要手动调用ofs.close()std::*fstream的析构函数会自动关闭链接的文件。 - L. F.
我明白了,谢谢 @L. F. - Tsakiroglou Fotis
1个回答

3
许多关于流的操作,包括 << 运算符(在您的情况下为非成员 operator<< 函数),返回流本身。而流对象具有 布尔转换运算符,您可以在条件中使用它来检查流的 状态是否良好

例如:

if (ofs << " more lorem ipsum")
{
    // Output operation okay
}

这通常用于输入。


还有一种可能性是设置异常掩码,这将导致流在特定状态下抛出异常。

默认情况下禁用异常。


谢谢。我已经检查了std::basic_ios,但现在我不太舒服使用它,但我会继续努力的。 - Tsakiroglou Fotis
我也相信你的信息会帮助我解决问题,所以我会将其标记为“已解决”。但是如果有人有任何想法,我很乐意审查它们。 - Tsakiroglou Fotis
仅供参考,我在这里复制了一下,这也可能很有用 https://dev59.com/mFgR5IYBdhLWcg3wO7Q0 - Tsakiroglou Fotis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接