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