2012-01-23 8 views
0

"%temp%"を入力して実行時にタイプすると簡単に見つかる一時フォルダにファイルを保存しますが、わからない場合はに移動します。はC++からです。ファイルを%temp%フォルダに保存しますか?

"GetTempPathA"や "GetTempFileNameA()"のような関数を使用しようとしましたが、char値を返しません。私の目的のために、私は "TResourceStream"から "SaveToFile"メソッドを使用し、UnicodeStringを必要とします。

+0

これらのapisは必要なものであり、返す文字列です。それらのドキュメントを読んでください。 UnicodeStringを取得するには、Wバージョンを呼び出します。 –

答えて

4

いいえ、いずれもでもGetTempFileName戻り値 char値です。一般に、C関数は文字列を返すことはありません。代わりに、文字列バッファとその文字列バッファの長さを渡します。関数は、に文字列バッファを要求された文字列で埋めます。

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

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

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

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

あなたはANSIバージョンを呼び出しているので、あなたは(char値で構成)ANSI文字列を取得しているのではなく、(wchar_t値で構成)Unicode文字列、期待を呼びそそうとする。

関連する問題