実行時に「%temp%」と入力すると簡単に見つかる一時フォルダーにファイルを保存したいのですが、C ++からそれらに移動する方法がわかりません。
「GetTempPathA」や「GetTempFileNameA()」などの関数を使用してみましたが、char 値が返されません。私の目的のために、「TResourceStream」の「SaveToFile」メソッドを使用し、UnicodeString が必要です。これらの情報を見つける方法は?
いいえ、char値GetTempPath
もGetTempFileName
返しません。一般に、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
呼び出しようとしているメソッドが期待するものです。