4

How to get temp folder and set a temp file path? I tried code bellow but it have error. Thank you very much!

TCHAR temp_folder [255];
GetTempPath(255, temp_folder);

LPSTR temp_file = temp_folder + "temp1.txt";
//Error: IntelliSense: expression must have integral or unscoped enum type
4

2 に答える 2

3

このコードは 2 つのポインターを追加しています。

LPSTR temp_file = temp_folder + "temp1.txt";

文字列を連結しておら ず、必要な結果の文字列用のストレージを作成していません。

C スタイルの文字列には、 と を使用lstrcpyします。lstrcat

TCHAR temp_file[255+9];                 // Storage for the new string
lstrcpy( temp_file, temp_folder );      // Copies temp_folder
lstrcat( temp_file, T("temp1.txt") );   // Concatenates "temp1.txt" to the end

のドキュメントにGetTempPath基づいて255、コード内のすべての を に置き換えることも賢明MAX_PATH+1です。

于 2013-04-24T03:44:18.117 に答える
1

2 つの文字配列を加算して意味のある結果を得ることはできません。それらはポインターであり、そのような便利な操作を提供する std::string のようなクラスではありません。

十分な大きさの TCHAR 配列を作成し、GetTempPath を使用してから、strcat を使用してファイル名を追加します。

TCHAR temp_file [265];
GetTempPath(255, temp_file);
strcat(temp_file, "temp1.txt");

理想的には、失敗について GetTempPath の結果もテストする必要があります。他の回答にリンクされているドキュメントからわかる限り、失敗の最も可能性の高い理由は、提供されたパス変数が小さすぎることです。そこで推奨されている MAX_PATH+1+9 を使用してください。

于 2013-04-24T03:49:17.273 に答える