Подтвердить что ты не робот

Преобразование TCHAR в строку в С++

Я пытаюсь преобразовать TCHAR в строку, как в:

std::string mypath;
TCHAR path[MAX_PATH];
GetModuleFileName( NULL, path, MAX_PATH );

Мне нужно установить mypath в значение path. Я сделал простой цикл и конкатенировал path[index] до mypath, и это работает, но мне это не нравится.

Я новичок в С++, но сделал много С#. Я видел примеры GetModuleFileName, который проходит в "char", но ему это не нравится. Он нуждается в TCHAR или LPWSTR.

4b9b3361

Ответ 1

TCHAR - это макрос, определяемый как char или wchar, в зависимости от того, для чего вы определили свой набор символов. Значение по умолчанию после 2008 года имеет набор символов для юникода. этот код работает, если вы измените свой набор символов.

int _tmain(int argc, _TCHAR* argv[])
{
    TCHAR* bob ="hi";
    string s = bob;    
}

Щелкните правой кнопкой мыши на настройках проекта и выполните следующие действия

enter image description here

если вы хотите использовать TCHAR как набор символов Unicode, используйте wstring

Ответ 2

Если вам нужен путь в символах, вы должны вызвать GetModuleFilenameA. Эта функция принимает LPSTR вместо LPTSTR.

Обратите внимание, что почти все функции Win32, которые берут или возвращают строки, имеют две версии, одна заканчивается на A (ANSI?), а другая заканчивается на W (wide).

Ответ 4

Когда мне нужно действительно, я использую следующее:

TCHAR  infoBuf[32767]
GetWindowsDirectory(infoBuf, 32767); 
//Let convert to string...
wstring test(&infoBuf[0]); //convert to wstring
string test2(test.begin(), test.end()); //and convert to string.

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