【发布时间】:2014-10-10 01:47:17
【问题描述】:
我想通过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();
}
- 如果
filename参数为C:\\MyProject\\CodeTest2010\\CodeTest2010\\test.txt,则test.txt文件创建成功。 - 如果参数
filename是C:\\MyProject\\CodeTest2010\\CodeTest2010\\或C:\\MyProject\\CodeTest2010\\CodeTest2010,则文件夹CodeTest2010 中没有任何更改。我认为它应该抛出异常来警告输入文件名无效。
我的问题是当输入文件是文件夹而不是文件名时,为什么它保持沉默而不是抛出异常?
根据this,我没有找到任何有关文件夹名称的信息输入到ofstream中。
【问题讨论】:
-
我不同意这里应该抛出异常。当您打开一个文件时,如果它是一个文件夹而不是普通文件,您预计它会失败。在我看来,这并不是真正的异常。您应该始终检查文件是否正确打开。如果没有,那么您可以报告错误并返回错误标志。我认为应该为意外的、难以从错误中恢复的异常保留异常。