Was ist der einfachste Weg, char [] zu / von TCHAR [] in C / C ++ (ms) zu konvertieren?
Frage
Dies scheint ein ziemlich Softball Frage, aber ich habe immer eine harte Zeit, diese Funktion suchen, weil es scheint, es gibt so viele Variationen in Bezug auf die Referenzierung von Saibling und TCHAR.
Lösung
MultiByteToWideChar sondern auch sehen "Ein paar der gotchas von MultiByteToWideChar" .
Andere Tipps
TCHAR ist eine Microsoft-spezifische typedef entweder char oder wchar_t (ein breites Zeichen).
Die Umstellung auf char hängt davon ab, welche dieser es tatsächlich ist. Wenn TCHAR tatsächlich ein Zeichen ist, dann können Sie einen einfachen Guss tun, aber wenn es wirklich ein wchar_t ist, müssen Sie eine Routine zwischen Zeichensätzen konvertieren. Siehe die Funktion MultiByteToWideChar ()
Es gibt ein paar Antworten in diesem Beitrag als gut, vor allem, wenn Sie für eine Cross-Plattform-Lösung suchen:
Obwohl in dieser besonderen Situation denke ich, die Tchar ein breites Zeichen werde ich nur die Umwandlung tun müssen, wenn es nicht ist. welche ich muss irgendwie überprüfen.
if (sizeof(TCHAR) != sizeof(wchar_t))
{ .... }
Die kühle Sache über das heißt beide Größen der equals Konstanten sind, was bedeutet, dass der Compiler behandelt (und entfernen) der if (), und wenn sie gleich sind, entfernen Sie alles, was in den geschweiften Klammern
Hier ist der CPP-Code, die _TCHAR * argv [] char * argn [].
DuplikateWenn Sie alten Code auf Windows Annahme, einfache Verwendung define im Code als optional erwähnt.
Sie können in Ihrem Code setzen Bedingung
ifdef _UNICODE
{// Kocht TCHAR ist breit CHAR} else {// Kocht TCHAR CHAR}
Ich weiß, das ein alter Thread ist, aber es hat mir nicht die „richtige“ Antwort, so dass es jetzt bin hinzugefügt wird.
Der Weg, dies jetzt zu tun scheint, ist die TEXT-Makro zu verwenden. Das Beispiel für Findfirstfile an Msdn weist darauf hin. http://msdn.microsoft .com / de-de / library / windows / Desktop / aa364418% 28v = VS.85% 29.aspx