gpt4 book ai didi

c++ - 文件输出中的简单错误检查

转载 作者:行者123 更新时间:2023-11-30 03:59:06 25 4
gpt4 key购买 nike

所以我有一个关于在 while 循环中使用 ofstream 的问题。假设我有一个大小为 X 的数组,我想遍历该数组并将项目输出到文件。以下代码是否足以进行错误检查?如果是(或不是),为什么?

char arr[X];
ofstream fout("out.txt");
for(int i=0;i<X;i++)
{
while(!(fout<<arr[i]){}
}

最佳答案

在编写 char 时,不会有太多可能出错的地方。唯一可能发生的错误是流的 std::streambuf 报告 overflow() 中的错误。这已通过您的测试进行了充分测试。也就是说,成功缓冲字符并不意味着写入缓冲区会成功。要测试写入是否成功,您还需要测试 fout.close() 是否成功!析构函数中的隐式 close() 将吞下任何错误。

但是请注意,一旦流进入故障状态,它就会停止做任何有用的事情,直到在流上调用 clear()。换句话说,如果在写入流时出现错误,您将以无限循环结束。即使调用 clear() 我也不希望底层流缓冲区会做任何不同的事情,即我希望它再次失败。也就是说,如果您真的关心这些错误,您需要想出比“重试”更好的错误处理策略!

关于c++ - 文件输出中的简单错误检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27093418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com