gpt4 book ai didi

c++ - 输入文件夹名称时 ofstream 是否应该抛出异常?

转载 作者:太空宇宙 更新时间:2023-11-04 16:12:56 26 4
gpt4 key购买 nike

我想通过ofstream生成文件,代码如下。

void testOfstream(string filename){
ofstream ofs(filename, ofstream::out | ofstream::trunc | ofstream::binary);

char body[] = { 'a', 'b', 'c' };

ofs.write(body, sizeof(body)/sizeof(char));

ofs.close();
}
  • 如果参数filenameC:\\MyProject\\CodeTest2010\\CodeTest2010\\test.txttest.txt文件创建成功。
  • 如果参数filenameC:\\MyProject\\CodeTest2010\\CodeTest2010\\,或者C:\\MyProject\\CodeTest2010\\CodeTest2010,文件夹CodeTest2010没有任何变化。我认为它应该抛出异常以警告输入文件名无效。

我的问题是为什么当输入文件是文件夹而不是文件名时它保持沉默而不是抛出异常?

根据 this , 我没有发现任何有关文件夹名称的信息被输入到 ofstream 中。

最佳答案

默认情况下,IOStreams 不会抛出异常。相反,他们将错误指示委托(delegate)给表示某些流错误的位掩码类型。无法打开文件被归类为可恢复错误,因此它在流状态中设置 std::ios_base::failtbit。您可以通过在 exceptions() 方法的参数中指定此位来启用异常:

ofs.exceptions(std::ios_base::failbit);

关于c++ - 输入文件夹名称时 ofstream 是否应该抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26290694/

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