Форум программистов, компьютерный форум CyberForum.ru

перевод русских букв в транслит - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.62
Nike92
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 11
24.02.2010, 12:00     перевод русских букв в транслит #1
Задача:
Перевести русские буквы в транслит, с ведением протокола.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.02.2010, 12:00     перевод русских букв в транслит
Посмотрите здесь:

C++ Из русских букв в английские
Иероглифы вместо русских букв C++
C++ Запись русских букв в массив!
кодировка русских букв в MAC OS C++
C++ Распознавание русских букв консолью
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
insideone
Модератор
Автор FAQ
 Аватар для insideone
3620 / 898 / 47
Регистрация: 10.01.2010
Сообщений: 2,423
24.02.2010, 14:21     перевод русских букв в транслит #2
Насчет протокола непонятно, но вот тут я кое что переводил http://www.cyberforum.ru/cpp/thread9...tml#post514852
Nike92
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 11
26.02.2010, 15:08  [ТС]     перевод русских букв в транслит #3
спс)) но мне надо на с,а не с++))
papirus
 Аватар для papirus
2 / 2 / 0
Регистрация: 21.07.2009
Сообщений: 49
26.02.2010, 16:32     перевод русских букв в транслит #4
Nike92, это и есть с++
insideone
Модератор
Автор FAQ
 Аватар для insideone
3620 / 898 / 47
Регистрация: 10.01.2010
Сообщений: 2,423
26.02.2010, 17:39     перевод русских букв в транслит #5
Цитата Сообщение от Nike92 Посмотреть сообщение
спс)) но мне надо на с,а не с++))
Не велика проблема Из С++ тут используется только вывод на экран... так что... наверное где то так. Я заменил cout << на printf
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <stdio.h>
#include <conio.h>
#include "string.h"
 
void Transliterate(char* str, char* newStr)
{
        for (; *str != 0; str++)
        {
                switch (str[0])
                {
                case 'а': strcat(&newStr[0], "a"); break;
                case 'б': strcat(&newStr[0], "b"); break;
                case 'в': strcat(&newStr[0], "v"); break;
                case 'г': strcat(&newStr[0], "g"); break;
                case 'д': strcat(&newStr[0], "d"); break;
                case 'е': strcat(&newStr[0], "e"); break;
                case 'ё': strcat(&newStr[0], "ye"); break;
                case 'ж': strcat(&newStr[0], "zh"); break;
                case 'з': strcat(&newStr[0], "z"); break;
                case 'и': strcat(&newStr[0], "i"); break;
                case 'й': strcat(&newStr[0], "y"); break;
                case 'к': strcat(&newStr[0], "k"); break;
                case 'л': strcat(&newStr[0], "l"); break;
                case 'м': strcat(&newStr[0], "m"); break;
                case 'н': strcat(&newStr[0], "n"); break;
                case 'о': strcat(&newStr[0], "o"); break;
                case 'п': strcat(&newStr[0], "p"); break;
                case 'р': strcat(&newStr[0], "r"); break;
                case 'с': strcat(&newStr[0], "s"); break;
                case 'т': strcat(&newStr[0], "t"); break;
                case 'у': strcat(&newStr[0], "u"); break;
                case 'ф': strcat(&newStr[0], "f"); break;
                case 'х': strcat(&newStr[0], "ch"); break;
                case 'ц': strcat(&newStr[0], "z"); break;
                case 'ч': strcat(&newStr[0], "ch"); break;
                case 'ш': strcat(&newStr[0], "sh"); break;
                case 'щ': strcat(&newStr[0], "ch"); break;
                case 'ъ': strcat(&newStr[0], "''"); break;
                case 'ы': strcat(&newStr[0], "y"); break;
                case 'ь': strcat(&newStr[0], "''"); break;
                case 'э': strcat(&newStr[0], "e"); break;
                case 'ю': strcat(&newStr[0], "yu"); break;
                case 'я': strcat(&newStr[0], "ya"); break;
                case 'А': strcat(&newStr[0], "A"); break;
                case 'Б': strcat(&newStr[0], "B"); break;
                case 'В': strcat(&newStr[0], "V"); break;
                case 'Г': strcat(&newStr[0], "G"); break;
                case 'Д': strcat(&newStr[0], "D"); break;
                case 'Е': strcat(&newStr[0], "E"); break;
                case 'Ё': strcat(&newStr[0], "Ye"); break;
                case 'Ж': strcat(&newStr[0], "Zh"); break;
                case 'З': strcat(&newStr[0], "Z"); break;
                case 'И': strcat(&newStr[0], "I"); break;
                case 'Й': strcat(&newStr[0], "Y"); break;
                case 'К': strcat(&newStr[0], "K"); break;
                case 'Л': strcat(&newStr[0], "L"); break;
                case 'М': strcat(&newStr[0], "M"); break;
                case 'Н': strcat(&newStr[0], "N"); break;
                case 'О': strcat(&newStr[0], "O"); break;
                case 'П': strcat(&newStr[0], "P"); break;
                case 'Р': strcat(&newStr[0], "R"); break;
                case 'С': strcat(&newStr[0], "S"); break;
                case 'Т': strcat(&newStr[0], "T"); break;
                case 'У': strcat(&newStr[0], "U"); break;
                case 'Ф': strcat(&newStr[0], "F"); break;
                case 'Х': strcat(&newStr[0], "Ch"); break;
                case 'Ц': strcat(&newStr[0], "Z"); break;
                case 'Ч': strcat(&newStr[0], "Ch"); break;
                case 'Ш': strcat(&newStr[0], "Sh"); break;
                case 'Щ': strcat(&newStr[0], "Ch"); break;
                case 'Ъ': strcat(&newStr[0], "''"); break;
                case 'Ы': strcat(&newStr[0], "Y"); break;
                case 'Ь': strcat(&newStr[0], "''"); break;
                case 'Э': strcat(&newStr[0], "E"); break;
                case 'Ю': strcat(&newStr[0], "Yu"); break;
                case 'Я': strcat(&newStr[0], "Ya"); break;
                default: { char Temp[2] = { str[0], 0} ; strcat(&newStr[0], &Temp[0]); }
                }
        }
}
 
int main()
{
        char* x = "Привет мир!";
        char y[100] = {0};
        Transliterate(x, &y[0]);
        printf("%s\n", y);
return 0;
}
Nike92
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 11
26.02.2010, 21:01  [ТС]     перевод русских букв в транслит #6
функции case на с я не замечал...
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
26.02.2010, 21:28     перевод русских букв в транслит #7
insideone, я думаю, что с использованием двух массивов и цикла было бы намного проще и разумнее

Nike92, case - эта вещь есть во всех С-подобных языках
insideone
Модератор
Автор FAQ
 Аватар для insideone
3620 / 898 / 47
Регистрация: 10.01.2010
Сообщений: 2,423
26.02.2010, 22:41     перевод русских букв в транслит #8
Цитата Сообщение от M128K145 Посмотреть сообщение
я думаю, что с использованием двух массивов и цикла было бы намного проще и разумнее
Согласен, однако цель была переделать из паскаля... может человек постигал C++) Я предпочитаю провести аналогичный код чтобы можно было понять особенности реализации одного и того же...
senid
Сообщений: n/a
01.09.2012, 21:57     перевод русских букв в транслит #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    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);
    }
на С++ с использование std::string

C++
1
if( text.substr(i,2).compare(rus[j])==0 ) { ret+=eng[j]; find=true; i++;  break;  }
i++ и text.substr(i,2) (длина в два символа а не один) для multicharacter encoding UTF8
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2013, 22:53     перевод русских букв в транслит
Еще ссылки по теме:

Кроссплатформенный перевод русских букв в верхний/нижний регистр C++
C++ Tolower для русских букв
C++ Ввод русских букв

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Gdasar
184 / 45 / 9
Регистрация: 18.02.2013
Сообщений: 417
Записей в блоге: 9
30.11.2013, 22:53     перевод русских букв в транслит #10
Добрый вечер.
Помогите разобраться с примером senid, а то он выводит исходный текст,а не транслит.
Yandex
Объявления
30.11.2013, 22:53     перевод русских букв в транслит
Ответ Создать тему
Опции темы

Текущее время: 23:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru