在我main()
调用的一个函数中,我有以下非常简单的测试片段。
ofstream outFile;
outFile.open("C:\\Program Files\\data\\test.txt");
outFile << "test\n";
outFile.close();
运行代码后,我没有看到文件出现。为什么会这样?
答案 0 :(得分:3)
不幸的是,C ++没有指定任何方法来获得更详细的错误。请参阅Get std::fstream failure error messages and/or exceptions。
但是特定于平台的界面应该可行。在每次操作后检查outFile.bad()
是否为真,检查GetLastError()
。根据文档中的适当表格或使用FormatMessage
解释。
我怀疑问题是权限。 Windows Vista引入了这种“用户访问控制”,当程序想要执行需要管理员权限的操作时,即使当前用户拥有它们,也应该弹出对话框。问题是对话框仅在某些条件下弹出。值得注意的是,它将不弹出控制台应用程序,并立即拒绝该应用程序的权限。此类应用程序必须“以管理员身份”明确执行。当然不要忘记能够编写特定文件并不意味着能够创建新文件。