crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Перевод строки в транслит
++Norton++
  опции профиля:
сообщение 4.11.2009, 23:50
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 98
Регистрация: 5.10.2008
Пользователь №: 380

Спасибо сказали: 0 раз(а)




Репутация:   1  


Стоит задача перевести строку QString в транслит (т.е. к примеру, русскую строку "привет мир" в "privet mir").
Хотелось бы узнать мнение, как лучше это сделать? Просто текст может быть очень большим.
Переводить все просто условиями, т.е. к примеру
if(str.at(i) == 'в')  resultStr.append("v");
else if(str.at(i) == 'г')  resultStr.append("g");
else if .....
...

Или может есть какой-то более рациональный вариант?

PS
И хотелось бы тут же спросить, как правильно сравнивать символы в вышеприведенном случае? Сравнение как в примере выше не получается. Т.е. если есть слово "арбуз", то в данном случае в if буква 'а' вовсе не распознается как 'а'. Да и все остальные буквы также. В чем может быть дело?

Сообщение отредактировал ++Norton++ - 5.11.2009, 0:28
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 5.11.2009, 3:50
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(++Norton++ @ 5.11.2009, 2:50) *
то в данном случае в if буква 'а' вовсе не распознается как 'а'.
какая из них русская, а какая английская?


Цитата(++Norton++ @ 5.11.2009, 2:50) *
Или может есть какой-то более рациональный вариант?
яб словарь использовал (QMap) или Хэш (QHash), последний быстрее работает

П.С. в коде:
Цитата(++Norton++ @ 5.11.2009, 2:50) *
if(str.at(i) == 'в') resultStr.append("v");
лучше строковые не ASCII константы обернуть в некую функцию, например, QObject::tr() и указать библиотеке Qt кодировку исходника
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 4.12.2024, 15:38