std::string-Funktionen unicodefähig machen
-
Wenn du die STL-Anteile auf UNICODE umstellen willst, mußt du das schon komplett machen - das schließt die Verwendung der wchar_t-Streamklassen (wistream, wfstream etc) und -Standardstreams (wcin, wcout, wcerr und wclog) mit ein.
-
Ersetze 'cout' durch 'wcout' (... und 'wcin', 'wcerr' etc.).
-
Danke Konrad ! Leider hab' ich zu einem obigen Problem immernoch eine Frage. Mir ist immernoch nicht klar, wie ich z.B. bei der Funktion ::GetGetFileAttributes() einen wstring-Typ (den ich durch die obige Umwandlung bekommen habe) in den geforderten LPCSTR-Typ umwandeln (casten) kann. Vielleicht hast Du ja eine Idee für mich parat!?
Gruß Ernst
-
Hallo, mit casten ist da nichts. Das erledigt aber die Methode 'c_str()':
wstring test = L"Hallo, Welt"; ::MessageBoxW(0, test.c_str(), 0, 0);
-
Danke hast mir sehr weitergeholfen ! Gruß Ernst.
-
generell mach ich das meistens auch so - also das ich alles in unicode entwickel
bei vielen ist aber die moeglichkeit beliebt den code fuer multibyte und unicode compilierbar zu machen
#ifndef DString #if ((defined UNICODE) || (defined _UNICODE)) #define DString std::wstring #define DIfStream std::wifstream #define DOfStream std::wofstream #define DfStream std::wfstream #else #define DString std::string #define DIfStream std::ifstream #define DOfStream std::ofstream #define DfStream std::fstream #endif #endif //... DString str = _T("No matter"); //... //dann geht immer wunderbar ::MessageBox(0, str.c_str(), str.c_str(), MB_OK);
-
Das ist ja grässlich - Wie wärs mit typedef?
-
Mr Evil schrieb:
//dann geht immer wunderbar
::MessageBox(0, str.c_str(), str.c_str(), MB_OK);typedef std::basic_string<TCHAR> tstring; //... etc. pp.
-
Nach langer Umwandlungsarbeit hänge ich noch an einem weiteren kleinen Problem! Folgende Codezeile will der Compiler nicht umsetzen :
if( wcscmp(fileName.cFileName, L".") != NULL && wcscmp(fileName.cFileName, L"..") != NULL) { ... }Da cFileName ein CHAR_WIN32_FIND_DATA-Typ ist, verträgt er sich nicht mit meiner wcscmp-Funktion, die natürlich einen const wchar_t* erwartet. Wie kann ich die Problematik an einfachsten lösen?
Danke im voraus, Gruß Ernst.
-
Biste dir sicher, das CHAR_WIN32_FIND_DATA ein Typ ist? Selbst die MSDN spuckt null Ergebnisse aus.
-
Ne, Du hast recht !!! Ist ein CHAR[] ! Sorry.