1

によって呼び出されている関数の 1 つの中にmain()、次の非常に単純なテスト スニペットがあります。

ofstream outFile;
outFile.open("C:\\Program Files\\data\\test.txt");
outFile << "test\n";
outFile.close();

コードを実行した後、ファイルが表示されませんでした。なぜそうなのですか?

4

1 に答える 1

3

残念ながら、C++ では、より詳細なエラーを取得する方法は指定されていません。std::fstream 失敗エラー メッセージおよび/または例外を取得するを参照してください。

ただし、プラットフォーム固有のインターフェイスは機能するはずです。各操作の後outFile.bad()、真であるかどうかを確認してくださいGetLastError()。ドキュメントの適切な表に従って、または を使用して解釈しますFormatMessage


問題は権限にあると思われます。Windows Vista では、現在のユーザーが管理者特権を持っている場合でも、プログラムが管理者特権を必要とする操作を実行するたびに、ダイアログをポップアップ表示する「ユーザー アクセス制御」が導入されました。問題は、ダイアログが特定の条件下でのみポップアップすることです。特に、コンソール アプリケーションではポップアップせず、アプリケーションはすぐにアクセス許可を拒否されます。このようなアプリケーションは、「管理者として」明示的に実行する必要があります。もちろん、そこに特定のファイルを書き込むことができるということは、新しいファイルを作成できるという意味ではないことを忘れないでください。

于 2013-10-09T14:09:45.363 に答える