TCHAR zu char konvertieren
-
hi,
ich möchte wie der titel schon sagt. TCHAR zu char konvertieren..
kenne schon die funktion MultiByteToWideChar().weiss nur nicht wie ich sie nutzen soll. könnt ihr mir helfen.
das in der msdn verstreh ich nich und in anderen foren auch nicht.
-
Nein du willst diese Funktion: WideCharToMultiByte(), Aber hier mal Beispielfunktionen für C++ mit STL. Wenn du C brauchst dann lass es uns wissen.
// Convert a wide Unicode string to an UTF8 string std::string utf8_encode(const std::wstring &wstr) { int size_needed = WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(), NULL, 0, NULL, NULL); std::string strTo( size_needed, 0 ); WideCharToMultiByte (CP_UTF8, 0, &wstr[0], (int)wstr.size(), &strTo[0], size_needed, NULL, NULL); return strTo; } // Convert an UTF8 string to a wide Unicode String std::wstring utf8_decode(const std::string &str) { int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0); std::wstring wstrTo( size_needed, 0 ); MultiByteToWideChar (CP_UTF8, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed); return wstrTo; }
-
brauch c
-
Versuch mal das:
void TCharToChar(const wchar_t* Src, char* Dest, int Size) { WideCharToMultiByte(CP_ACP, 0, Src, wcslen(Src)+1, Dest , Size, NULL, NULL); }
-
(TCHAR entspricht char wenn du Unicode ausschaltest)
-
geeky schrieb:
(TCHAR entspricht char wenn du Unicode ausschaltest)
Das kann ja nicht die Lösung sein, es geht nicht also schalte ich es einfach aus. Die Zeiten von Ascii sollten meiner Meinung nach schon längst abgeschafft worden sein.
-
okay aba wie benutze ich das jetzt
TCharToChar(buffer1, buffer2, 20) so zb?
okay so gehts schonmal nicht: TCharToChar: Bezeichner wurde nicht gefunden.
-
void TCharToChar(const wchar_t* Src, char* Dest, int Size) { WideCharToMultiByte(CP_ACP, 0, Src, wcslen(Src)+1, Dest , Size, NULL, NULL); } int main(void) { const TCHAR TChrData[] = _T("Hello World"); char AnsiBuffer[255]; TCharToChar(TChrData, AnsiBuffer, sizeof(AnsiBuffer)); //...printf }
-
okay danke klappt alles.. ich danke dir
ich frag mich warum das in anderen foren oda so imma so kompliziert erklärt wird..
-
HighLigerBiMBam schrieb:
Nein du willst diese Funktion: WideCharToMultiByte(), Aber hier mal Beispielfunktionen für C++ mit STL. Wenn du C brauchst dann lass es uns wissen.
// Convert a wide Unicode string to an UTF8 string std::string utf8_encode(const std::wstring &wstr) { int size_needed = WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(), NULL, 0, NULL, NULL); std::string strTo( size_needed, 0 ); WideCharToMultiByte (CP_UTF8, 0, &wstr[0], (int)wstr.size(), &strTo[0], size_needed, NULL, NULL); return strTo; } // Convert an UTF8 string to a wide Unicode String std::wstring utf8_decode(const std::string &str) { int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0); std::wstring wstrTo( size_needed, 0 ); MultiByteToWideChar (CP_UTF8, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed); return wstrTo; }
Du verlässt die darauf, dass &str[0] auf kontinuirliches Memory zeigt, was erst ab C++0x Standard ist.
-
theta schrieb:
Du verlässt die darauf, dass &str[0] auf kontinuirliches Memory zeigt, was erst ab C++0x Standard ist.
Es gibt keinen Windows Compiler der es anders macht.
Ob der Code mit Compilern für irgendwelche anderen Architekturen kompatibel ist, ist in Anbetracht der Nutzung der WinAPI auch schon egal