Получить путь к временной папке пользователя С++

Хорошо, вы все оказали огромную помощь сегодня, и у меня есть последний вопрос, который завершит мою программу, и я надеюсь, что на него не будет сложно ответить.

Что я хочу сделать, так это взять путь к временной папке пользователя и сохранить его в std::string.

Мне удалось найти эту ссылку: http://msdn.microsoft.com/en-us/library/aa364992%28VS.85%29.aspx

Единственная проблема со ссылкой - я не понимаю, как ее взять и сохранить в строку.


person Elliot Ames    schedule 25.08.2013    source источник


Ответы (2)


std::wstring strTempPath;
wchar_t wchPath[MAX_PATH];
if (GetTempPathW(MAX_PATH, wchPath))
    strTempPath = wchPath;

Измените wstring на string, wchar_t на char и GetTempPathW на GetTempPathA, если вы не используете Unicode.

person Jonathan Potter    schedule 25.08.2013

Эта функция, похоже, использует строку C-Style. Однако вы можете преобразовать его в строку C++.

#define MAX_LENGTH 256 // a custom maximum length, 255 characters seems enough

#include <cstdlib> // for malloc and free (optional)
#include <string>

using namespace std;

// other code

char *buffer = malloc(MAX_LENGTH);
string temp_dir;

if (GetTempPath(MAX_LENGTH, buffer) != 0) temp_dir = string(buffer);
else {/* GetTempPath returns 0 on error */}

free(buffer); // always free memory used for the C-Style String

// other code

Вы также можете выделить и освободить память, используя new[] и delete[], если вам так проще! Вы также можете использовать статическое выделение памяти!

Надеюсь, это поможет... :D

person someone    schedule 25.08.2013