VC++. Замена русских букв
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
VC++. Замена русских букв - 2006-02-23 15:40:11
|
|
|
rp9l3b
Сообщений: 179
Оценки: 0
Присоединился: 2006-02-23 14:11:07
|
Задача: Пишем в IDC_INPUT русское(!) слово, а в IDC_OUTPUT получаем тоже самое слово, но с замененными буквами (''ы'' заменяем на ''и''). С английскими буквами все получается, т.е. переводит, а с русскими не хочет. Причем если на входе пишем русские буквы(сначала хочу получить на выходе англ. буквы), то на выходе получается то-же самое(без изменений), а если на вход подать англ. буквы(при этом, получить на выходе русские) получаются квадраты.
Буквы меняю при нажатии на кнопку, вот код:
void CHW2Dlg::OnBnClickedChange() { CString input; int len;
GetDlgItemText(IDC_INPUT, input); len = CString::StringLength(input);
//1-ый способ: for(int i=0; i<len; i++) { if (input.GetAt(i) == ''ы'') input.SetAt(i, ''и''); }
//2-ой способ: // input.Replace(''ы'', ''и'');
SetDlgItemText(IDC_OUTPUT, input); }
Что я делаю не так? Помогите, очень надо.
|
|
|
VC++. Замена русских букв - 2006-02-23 17:20:34
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
чой-то я запутался в твоих англо-русских входах и русско-английских выходах. Мне кажется замена `ы' на `и' – она не меняет класса char'а, то есть как он был русским так русским и остался, английских от этого не прибавится и не убавится.
Но как бы там ни было, я предполагаю что проблема с кодировками. ты уверен, что IDC_INPUT работает с символами в кодировке cp1251 (я предполагаю что именно в этой кодировке твой сорец)? Мож оно вообще работает с utf16, со всеми вытекающими отсюда. Или CString, работает с неоднобайтовыми символами.
|
|
|
|
|