Ist es ratsam, strcmp oder _tcscmp zum Vergleichen von Zeichenfolgen in Unicode-Versionen zu verwenden?Ist es ratsam, strcmp oder _tcscmp zum Vergleichen von Zeichenfolgen in Unicode-Versionen zu verwenden?
8
A
Antwort
8
_tcscmp()
ist ein Makro. Wenn Sie UNICODE
definieren, wird wcscmp()
verwendet, andernfalls wird strcmp()
verwendet.
Beachten Sie, dass die Typen TCHAR
, PTSTR
usw. ähnlich sind. Sie werden WCHAR
und PWSTR
sein, wenn Sie UNICODE
und CHAR
und PSTR
andernfalls definieren.
7
Nein, Sie sollten _ tcscmp
verwenden. Dies wird abhängig von Ihren Compiler-Flags zu einer korrekten Funktion aufgelöst.
Das ist falsch. "UNICODE" steuert die Definition der breiten Zeichenfolge in der Win32-API. wenn Sie '#' einschließen. '_UNICODE' steuert die C-Laufzeiten-Unterstützung für breite (und Multi-Byte-) Zeichen und hat eine Bedeutung, wenn Sie # ' (oder einen der anderen c-Laufzeit-Header) einschließen. Wenn '_UNICODE' definiert ist, wird' _tcscmp' 'wcscmp', sonst wird' _MBCS' definiert, '_tcscmp' wird' _mbcscmp', sonst wird 'strcmp'. –
@Chris Becke Hm, das wusste ich nicht. Normalerweise definiere ich beides (mit führendem Unterstrich und ohne), und jetzt macht es Sinn, warum das nötig ist. :-) – asveikau