0

ofstream(C++ Builder)を使用してテキスト ファイルを特定のディレクトリに保存しようとしています。Windows 7 で問題が発生しています。

// Works fine at Windows XP and Windows 7
std::ofstream file1("Name.txt"); 

// Works fine at Windows XP but not at Windows 7
std::ofstream file1("Folder1/Name.txt"); 

// Works fine at Windows XP but not at Windows 7
std::ofstream file1("Folder1\\Name.txt"); 

Windows 7 を使用して「.txt」ファイルを特定のディレクトリに保存するにはどうすればよいですか?

OBS: Windows 7 を使用してプログラムを保存すると、ファイルは次の場所に保存されます。

C:\Users\Name\AppData\Local\VirtualStore\Folder1\Name.txt

4

1 に答える 1

4

まず、プロセスの存続期間中に動的に変化する、呼び出しプロセスの現在の作業ディレクトリに対して相対パスであるため、相対パスの使用を停止します。代わりに常に絶対パスを使用してください。スラッシュの代わりにバックスラッシュを使用し、文字列リテラルでのみバックスラッシュをエスケープするようにしてください。

std::ofstream file1("C:\\Folder1\\Name.txt"); 

次に、アプリを実行しているユーザー アカウントに、フォルダーにアクセスしてファイルを書き込むためのセキュリティ権限があることを確認します。Vista 以降では、特に UAC が有効になっている場合、XP よりもはるかに制限が厳しくなります。特にアプリが「Program Files」フォルダーの下にインストールされている場合、多くのフォルダーは読み取り専用です。プログラムのインストール フォルダーまたはそのサブフォルダーには書き込みを行わないでください。Windows がユーザー関連およびアプリ関連のファイル用に確保する特別なフォルダーを使用します。

于 2011-11-16T03:41:01.853 に答える