convert LPTSTR to std::string
-
hallo leute,
wie konvertiert man convert LPTSTR to std::string?
ciao
-
Gar nicht
ZUnächst mußt du dir klarmachen, was LPTSTR ist - je nach Einstellungen verbirgt sich dahinter entweder char* oder wchar_t*, die du mit einer Zuweisung an einen std::string bzw. std::wstring übergeben kannst. (wenn du unabhängig von den Compiler-Einstellungen sein willst, setz ein
typedef std::basic_string<TCHAR> tstring;
an den Programmanfang und arbeite danach mit 'tstring')
-
Hi!
LPTSTR ist nur ein typedef für char*, also sollte man es einem std::string ganz einfach übergeben können:
LPTSTR lptStr = "Hallo Welt"; std::string str = lptStr; // oder std::string str(lptStr);
Ich glaube LPTSTR kann auch wchar_t* sein, dann musst du std::wstring nehmen. Ansonsten mal hier im Forum suchen bezüglich der Konvertierung zwischen char und wchar_t.
Greetz
-
warum geht das dann nicht?
LPTSTR pMessageBuffer; ::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, errorCode_, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), reinterpret_cast<LPTSTR>(&pMessageBuffer), 0, NULL); std::string errorMessage(pMessageBuffer); ::LocalFree(pMessageBuffer); error C2664: 'std::basic_string<_Elem,_Traits,_Ax>::basic_string(std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it)' : cannot convert parameter 1 from 'LPTSTR' to 'std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it' with [ _Elem=char, _Traits=std::char_traits<char>, _Ax=std::allocator<char> ] Constructor for struct 'std::basic_string<_Elem,_Traits,_Ax>::_Has_debug_it' is declared 'explicit' with [ _Elem=char, _Traits=std::char_traits<char>, _Ax=std::allocator<char> ]
-
hm das liegt an unicode
-
Vellas schrieb:
Ich glaube LPTSTR kann auch wchar_t* sein, dann musst du std::wstring nehmen. Ansonsten mal hier im Forum suchen bezüglich der Konvertierung zwischen char und wchar_t.
^^ genau das hier dürfte dein Problem sein.
Schau dir einfach mal die Projektoptionen an, welche Makros der Compiler vordefiniert - wenn dort "UNICODE" dabeisteht, ist LPTSTR ein wchar_t* und du mußt dir überlegen, wie du den umwandeln kannst (oder umsteigen auf wstring).
-
hi,
ja es stand vorher unicode!
mit mutibytecode gehts wunderbar...
danke