Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2013, 23:33   #1
Gdasar
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 60
По умолчанию перевод русских букв в транслит

Доброго времени суток.
Форумчане,помогите разобраться с примером, а то он выводит исходный текст,а не транслит.
Код:
   std::string rus[74]={"А", "а", "Б", "б",    "В", "в", "Г", "г", "Ґ", "ґ", "Д", "д", "Е", "е", "Є", "є", "Ж", "ж", "З", "з", "И", "и", "І", "і", "Ї", "ї", "Й", "й", "К", "к",   
    "Л", "л", "М", "м", "Н", "н", "О", "о", "П", "п",   "Р", "р", "С", "с", "Т", "т", "У", "у", "Ф", "ф",   "Х", "х", "Ц", "ц", "Ч", "ч",   "Ш", "ш",   
    "Щ", "щ", "Ь", "ь", "Ю", "ю",   "Я", "я", "Ы", "ы", "Ъ", "ъ", "Ё", "ё", "Э", "э"};
 
    std::string eng[74]={"A", "a", "B", "b",    "V", "v", "G", "g", "G", "g", "D", "d", "E", "e", "E", "E", "Zh", "zh", "Z", "z", "I", "i", "I", "I", "Yi", "yi", "J", "j", "K", "k",   
    "L", "l", "M", "m", "N", "n", "O", "o", "P", "p",   "R", "r", "S", "s", "T", "t", "U", "u", "F", "f",   "H", "h", "Ts", "ts", "ch", "ch", "Sh", "sh",   
    "Shh", "shh", "'", "'", "Yu", "yu","Ya", "ya", "Y", "y", "", "", "Yo", "yo", "E", "e"};
 
    std::string text("Шла мышка по шоссе и сосала сушку! Hello world =)"); bool find=false;
    std::string ret;
   //std::cout << qwe.substr(2,2).compare(rus[3]) << std::endl;
    for(int i=0; i<=text.length(); i++)
    {
      find=false;
      for(int j=0;j<74;j++)
      {
    if( text.substr(i,2).compare(rus[j])==0 ) { ret+=eng[j]; find=true; i++;  break;  }
      }
      if( ! find ) ret+=text.substr(i,1);
    }
Заранее спасибо

Последний раз редактировалось Stilet; 03.12.2013 в 14:42.
Gdasar вне форума Ответить с цитированием
Старый 03.12.2013, 00:06   #2
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

ты конвертишь из русского в английский, но сравниваешь по правилам конверта из английского в русский. И зачем то i плюсишь дважды...
Smogg вне форума Ответить с цитированием
Старый 03.12.2013, 00:16   #3
Gdasar
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 60
По умолчанию

Smogg,я так и не понял
Цитата:
сравниваешь по правилам конверта из английского в русский
можете написать подробнее?
Gdasar вне форума Ответить с цитированием
Старый 03.12.2013, 01:24   #4
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

Цитата:
text.substr(i,2).compare(rus[j])==0
берешь подстроку длиной 2. Что не верно
Smogg вне форума Ответить с цитированием
Старый 03.12.2013, 10:54   #5
Gdasar
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 60
По умолчанию

Smogg,спасибо
Gdasar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отрисовка русских букв Fedor666 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 22.09.2012 03:20
Кодировка utf8. Работа с символами. Перевод русских букв в латинских аналог dr.Chas PHP 3 24.03.2011 16:47
Не выводит русских букв didzial Общие вопросы C/C++ 17 14.01.2010 12:04
Фильтр русских букв lavelas Помощь студентам 3 22.12.2009 06:32
Ввод русских букв в Delphi Аццкий Нуп Помощь студентам 3 25.06.2008 23:27