Сохранить файл в папке% temp%? - PullRequest
0 голосов
/ 24 января 2012

Я хочу сохранить файл во временной папке, которую легко найти при вводе текста, поставив «% temp%», но я не знаю , как перейти к ним из c ++.

Я пытаюсь использовать такие функции, как «GetTempPathA» или «GetTempFileNameA ()», но они не возвращают значение символа.Для моей цели я использую метод «SaveToFile» из «TResourceStream» и мне нужно UnicodeString, как найти эту информацию?

1 Ответ

5 голосов
/ 24 января 2012

Нет, ни GetTempPath, ни GetTempFileName не возвращают значение символа.В общем, функции C никогда не возвращают строки.Вместо этого вы передаете строковый буфер и длину этого строкового буфера, и функция заполняет строковый буфер запрошенной строкой.

Например, для вызова GetTempPath,вы бы написали следующий код:

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

szTempPathBuffer будет содержать путь к временному каталогу.

Обратите внимание, что вы, вероятно, не должны явно вызывать функции ANSI (те, которые сA суффикс).Windows была полностью Unicode уже более десяти лет.Либо используйте макросы, определенные в заголовках Windows, которые автоматически разрешают правильную версию функции в зависимости от того, определен ли _UNICODE, либо явно вызывайте версии Unicode (с суффиксом W).

Поскольку вы вызываете версии ANSI, вы получаете строку ANSI (состоящую из char значений), а не строку Unicode (состоящую из wchar_t значений), что, вероятно, является методом SaveToFile, которыйвы пытаетесь позвонить, ожидает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...