Преобразование 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
.