Можно ли использовать strcmp или _tcscmp для сравнения строк в версиях Unicode?Можно ли использовать strcmp или _tcscmp для сравнения строк в версиях Unicode?
8
A
ответ
8
_tcscmp()
- макро. Если вы определите UNICODE
, он будет использовать wcscmp()
, в противном случае он будет использовать strcmp()
.
Обратите внимание, что типы TCHAR
, PTSTR
и т. Д. Аналогичны. Они будут WCHAR
и PWSTR
, если вы определяете UNICODE
и CHAR
и PSTR
в противном случае.
7
Нет, вы должны использовать _ tcscmp
. Это решит правильную функцию в зависимости от ваших флагов компилятора.
Это неверно. 'UNICODE' управляет определением широкой символьной строки в Win32 API. когда вы '#include'. '_UNICODE' управляет поддержкой c-runtimes для широких (и многобайтовых) символов и имеет смысл, когда вы' #include '(или любые другие заголовки c-runtime). Если '_UNICODE' определен,' _tcscmp' будет 'wcscmp', иначе если' _MBCS' определен, '_tcscmp' будет' _mbcscmp', иначе он будет 'strcmp'. –
@ Крис Бекке Хм, я этого не знал. Обычно я определяю как (с ведущим подчеркиванием, так и без), и теперь имеет смысл, почему это необходимо. :-) – asveikau