Я проверяю, содержит ли переменная CString только] китайские символы. Диапазон Unicode для китайских иероглифов - 4E00 - 9FFF.Проверьте, содержит ли Cstring только китайские символы
Я делаю следующим образом:
CString str;
char ch;
GetDlgItemText(IDC_EDIT1, str);
for(int i=0;i<str.GetLength();i++) {
ch=str[i];
if(ch>='\u4E00'&&ch<='\u9FFF') {
//even if input chinese character here 'if' evaluates to false
SetDlgItemText(IDC_RICHEDIT21, str);
SendDlgItemMessage(IDC_RICHEDIT21, EM_REPLACESEL, TRUE, (LPARAM)(LPCTSTR)str);
} else
break;
Но если я
if(ch=='\u4E00')
и введите символ \ u4E00, то он работает отлично.
Так что мой вопрос в том, как найти погоду, символ находится между конкретным диапазоном Юникода?
Еще одна вещь: если я использую if(ch=='\u4e00')
, тогда она дает true, но если я делаю if(ch<='\u4e00')
, она возвращает false. Я не понимаю этого поведения!
Мой код
CString str;
wchar_t ch;
GetDlgItemText(IDC_EDIT1, str);
for(int i=0;i<str.GetLength();i++) {
ch=str[i];
if(ch<='\u4e01') {
//returns false, but returns true if(ch=='\u4e01')
SetDlgItemText(IDC_RICHEDIT21, str);
SendDlgItemMessage(IDC_RICHEDIT21, EM_REPLACESEL, TRUE, (LPARAM)(LPCTSTR)str);
else
break;
}
Ум, вы используете символ, а не wchar. –
Если я использую wchar, я получаю ошибку следующим образом: test3Dlg.cpp (155): ошибка C2065: 'wchar': uneclared identifier –
Это 'WCHAR' (определяется заголовками Windows) или' wchar_t' для использования типа C++ , –