Convertir TCHAR en cadena en C++
string to int c++ (4)
Estoy tratando de convertir un TCHAR a una cadena como en:
std::string mypath;
TCHAR path[MAX_PATH];
GetModuleFileName( NULL, path, MAX_PATH );
Necesito establecer mypath
al de path
. Hice un bucle simple y una path[index]
concatenada path[index]
a mypath
y esto funciona, pero no me gusta de esta manera.
Soy nuevo en C ++ pero he hecho un montón de C #. He visto ejemplos del GetModuleFileName
que pasa en un "char" pero no le gusta. Necesita el TCHAR
o un LPWSTR
.
Cuando realmente necesito hacerlo, uso lo siguiente:
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.
Espero que ayude.
Si desea la ruta en caracteres, debe llamar a GetModuleFilenameA
. Esa función toma LPSTR
lugar de LPTSTR
.
Tenga en cuenta que casi todas las funciones de Win32 que toman o devuelven cadenas tienen dos versiones, una que termina en A
(ANSI?) Y la otra que termina en W
(ancho).
TCHAR es una macro definida como char o wchar dependiendo de lo que tengas definido en tu conjunto de caracteres. El valor predeterminado después de 2008 es tener el conjunto de caracteres a Unicode. Este código funciona si cambias tu conjunto de caracteres.
int _tmain(int argc, _TCHAR* argv[])
{
TCHAR* bob ="hi";
string s = bob;
}
Haz clic derecho en la configuración del proyecto y cambia la siguiente
Si desea utilizar TCHAR como un conjunto de caracteres Unicode, use wstring
También puede convertir de _TCHAR*
a char*
usando la función wcstombs
o wcstombs_s
http://msdn.microsoft.com/en-us/library/5d7tc9zw%28v=vs.80%29.aspx