Как получить временную папку и установить путь к временному файлу?

Как получить временную папку и установить путь к временному файлу? Я попробовал код ниже, но у него есть ошибка. Большое спасибо!

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

person user2313774    schedule 24.04.2013    source источник


Ответы (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< /a>, также было бы разумно заменить все вхождения 255 в вашем коде на MAX_PATH+1.

person Drew Dormann    schedule 24.04.2013

Вы не можете сложить вместе два массива символов и получить осмысленный результат. Это указатели, а не класс вроде std::string, который предоставляет такие полезные операции.

Создайте достаточно большой массив TCHAR и используйте GetTempPath, затем используйте strcat, чтобы добавить к нему имя файла.

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

В идеале вы также должны проверить результат GetTempPath на наличие ошибки. Насколько я вижу из документации, связанной с другим ответом, наиболее вероятной причиной сбоя является то, что предоставленная переменная пути слишком мала. Используйте MAX_PATH+1+9, как там рекомендовано.

person Muscles    schedule 24.04.2013