Bạn có nên sử dụng strcmp hoặc _tcscmp để so sánh các chuỗi trong phiên bản Unicode không?Bạn có nên sử dụng strcmp hoặc _tcscmp để so sánh các chuỗi trong phiên bản Unicode không?
8
A
Trả lời
8
_tcscmp()
là macro. Nếu bạn xác định UNICODE
, nó sẽ sử dụng wcscmp()
, nếu không nó sẽ sử dụng strcmp()
.
Lưu ý các loại TCHAR
, PTSTR
, v.v. tương tự nhau. Chúng sẽ là WCHAR
và PWSTR
nếu bạn xác định UNICODE
và CHAR
và PSTR
nếu không.
7
Không, bạn nên sử dụng _ tcscmp
. Điều đó sẽ giải quyết cho chức năng thích hợp tùy thuộc vào cờ biên dịch của bạn.
Điều đó không đúng. 'UNICODE' định nghĩa chuỗi ký tự rộng trong API Win32. tức là khi bạn '#include'. '_UNICODE' thúc đẩy sự hỗ trợ c-runtimes cho các ký tự rộng (và nhiều byte), và có nghĩa khi bạn' #include '(hoặc bất kỳ phần đầu c-runtime nào khác). Nếu '_UNICODE' được định nghĩa,' _tcscmp' sẽ là 'wcscmp', nếu' _MBCS' được định nghĩa, '_tcscmp' sẽ là' _mbcscmp', nếu không nó sẽ là 'strcmp'. –
@Chris Becke Hm, tôi không biết điều đó. Tôi thường xác định cả hai (với dấu gạch dưới và không có), và bây giờ nó có ý nghĩa tại sao đó là cần thiết. :-) – asveikau