In Linux verwenden Sie normalerweise nicht wchar_t
für Bibliothek API-Funktionen. Die meisten Bibliotheken verwenden UTF-8-codierte Strings, also nehmen sie als Strings einfache Arrays von NUL-terminierten Zeichen (IMO, die weit besser sind als das Duplizieren aller Funktionen mit ANSI- und Unicode-Versionen).
Also, in diesem Sinne:
LPCTSTR
, LPCSTR
, LPCWSTR
->const char *
.
LPTSTR
, LPSTR
, LPWSTR
->char *
.
Wenn Sie sich mit dem Unicode-Funktionen bestehen, MS Stil, müssen Sie sich bewusst sein, dass sie tatsächlich UTF-16 codierten Zeichenfolge verwenden, und wchar_t
ist keine tragbare Art, wie seine Größe nicht durch die Sprache angegeben wird. Stattdessen können Sie uint16_t
verwenden:
LPCWSTR
->const uint16_t *
.
LPWSTR
->uint16_t *
.
Und wenn Sie wollen zusätzliche MS kompatibel sein, können Sie die UNICODE
Makro bedingt typedef die LPTSTR
und LPTCSTR
in einer der anderen verwenden, aber das ist wahrscheinlich nicht benötigt für Ihr Problem.
Wenn Sie in C arbeiten, erhalten Sie Kompilierungsfehler mit wchar_t. Es funktioniert mit C++, aber nicht unter Windows wchar_t ist 2 Bytes; Unter Linux sind es 4 Bytes. – cup
@cup Wann wurde 'wchar_t' von C entfernt? Soweit ich weiß, existiert es in C. – glglgl
@glglgl: Ich weiß nicht, ob es von C entfernt wurde. Es funktioniert nicht auf C-Programmen in gcc 4.7.2. Funktioniert unter Windows. – cup