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

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

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

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

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

4 ответа

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

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

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

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

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

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

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

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

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

Вы также можете конвертировать из _TCHAR* в char* с помощью wcstombs или же wcstombs_s функция

http://msdn.microsoft.com/en-us/library/5d7tc9zw%28v=vs.80%29.aspx

Привет, это поздний ответ, но у меня есть идея.

{wstring test = User;
 std::wcout << test << std::endl;
 string test2(test.begin(), test.end());
 std::cout << test2 << std::endl;}

Пользователь в этом примере - это имя пользователя как TCHAR. Теперь я могу использовать это имя какstring или wstring. Это самый простой способ конвертироватьTCHAR к string.

Другие вопросы по тегам