0

実行時に「%temp%」と入力すると簡単に見つかる一時フォルダーにファイルを保存したいのですが、C ++からそれらに移動する方法がわかりません。

「GetTempPathA」や「GetTempFileNameA()」などの関数を使用してみましたが、char 値が返されません。私の目的のために、「TResourceStream」の「SaveToFile」メソッドを使用し、UnicodeString が必要です。これらの情報を見つける方法は?

4

2 に答える 2

6

いいえ、char値GetTempPathGetTempFileName 返しません。一般に、C関数は文字列を返しません。代わりに、文字列バッファーとその文字列バッファーの長さを渡すと、関数は要求された文字列を文字列バッファーに入力します。

たとえば、を呼び出すGetTempPathには、次のコードを記述します。

TCHAR szTempPathBuffer[MAX_PATH];
GetTempPath(MAX_PATH,            // length of the buffer
            szTempPathBuffer);   // the buffer to fill

szTempPathBuffer一時ディレクトリへのパスが含まれます。

ANSI関数(接尾辞が付いている関数)を明示的に呼び出すべきではないことに注意してくださいA。Windowsは10年以上にわたって完全にUnicodeになっています。Windowsヘッダーで定義されたマクロを使用して、定義されているかどうかに応じて関数の正しいバージョンに自動的に解決するか_UNICODE、Unicodeバージョン(W接尾辞が付いているもの)を明示的に呼び出します。

ANSIバージョンを呼び出しているのでchar、Unicode文字列(値で構成されている)ではなく、ANSI文字列(値で構成されている)を取得しています。wchar_tこれは、おそらくSaveToFile呼び出しようとしているメソッドが期待するものです。

于 2012-01-23T23:00:33.427 に答える