Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
2 / 1 / 1
Регистрация: 28.10.2014
Сообщений: 129
1

Case и русские символы

04.11.2016, 13:26. Показов 4504. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте,
Есть массив char text[10000] в котором лежат буквы. При проверке лежит ли в данном месте определённая буква,компилятор ругаеться(предупрежадает, что это Multi-character) на русские буквы(строковые и прописные), из того что я нашёл - на русские буквы уходит по 2 байта. И если так , то как мне узнать лежит ли в массиве по индексу i нужная мне буква(ы) или нет?(с английскими и символами всё в порядке)



C++
1
2
3
4
5
6
7
8
9
10
switch (text[i])
{
case 'a':
        {
            mestochar[i]= 27;
            break;
        }
            default: mestochar[i]= 0;
            break;
        }
mestochar - массив с целочислеными значениями.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2016, 13:26
Ответы с готовыми решениями:

Широкие символы wchar_t wstring не хотят принимать русские символы
Собственно вопрос в шапке, вот примеры: std::wstring str = L"блин комом"; и такое: wchar_t...

case и русские буквы.
Здравствуйте, для перевода в кириллицу я использовал SetConsoleOutputCP(1251); ...

Русские символы
Всем привет! написал программу автокоррекции: проверяется 1 ошибка в слове, если удалён символ,...

Русские символы
Подскажите пожалуйста как сделать правильный вывод русского алфавита, так как при выводе выдает...

16
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
04.11.2016, 14:17 2
Похоже что у вас кодировка исходного файла из разряда Unicode.
Пробуйте так: case L'a':
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
04.11.2016, 14:49 3
Цитата Сообщение от Валерий_ Посмотреть сообщение
И если так , то как мне узнать лежит ли в массиве по индексу i нужная мне буква(ы) или нет?
С бубном. Чтобы без бубна, нужно пользоваться wchar_t. То есть, перегнать текст в utf-16. Ну и как сказали выше, использовать L'а'.
0
2 / 1 / 1
Регистрация: 28.10.2014
Сообщений: 129
04.11.2016, 15:12  [ТС] 4
А если передать код символа? И как его передать ?(2 необязательно)
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
04.11.2016, 15:21 5
Цитата Сообщение от Валерий_ Посмотреть сообщение
А если передать код символа? И как его передать ?(2 необязательно)
Куда передать? Зачем передать? Какой код символа?
0
2 / 1 / 1
Регистрация: 28.10.2014
Сообщений: 129
04.11.2016, 15:27  [ТС] 6
Цитата Сообщение от castaway Посмотреть сообщение
Куда передать? Зачем передать? Какой код символа?
Case L'a' - не прошло.
Я и подумал, что может быть вместо 'а' нужно передать его код, или он сразу вопринимает 'a' , как (char)(1072)?
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
04.11.2016, 15:37 7
Цитата Сообщение от Валерий_ Посмотреть сообщение
Я и подумал, что может быть вместо 'а' нужно передать его код, или он сразу вопринимает 'a' , как (char)(1072)?
Мне кажется что вы где-то лажаете без нашего ведома. Прикрепите весь проект в виде архива.
0
2 / 1 / 1
Регистрация: 28.10.2014
Сообщений: 129
04.11.2016, 15:47  [ТС] 8
Ну вот это функция из заголовочного файла.
Вложения
Тип файла: zip 2.zip (359 байт, 2 просмотров)
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
04.11.2016, 15:51 9
Цитата Сообщение от castaway Посмотреть сообщение
Прикрепите весь проект в виде архива.
Цитата Сообщение от Валерий_ Посмотреть сообщение
Ну вот это функция из заголовочного файла.
Вас же попросили весь проект.
Откуда нам знать, с какими данными Вы вызываете эту функцию?
Телепаты, как обычно, в отпуске.

Добавлено через 1 минуту
Хотя в Вашем случае лечится так:
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
int passing(char text[10000],char passi[65],int dlina,int dlina_pass)
{
    int mestochar[10000];
    int mestopass[65];
 
 
    for (int i=0;i<dlina;i++)
    {
        switch (text[i])
{   
    case L'а':
        {
            mestochar[i]= 27;
            break;
        }
        case ' ':
        {
            mestochar[i]= 1+rand() % 153;
            break;
        }
//space
        default: mestochar[i]= 0;
            break;
        }
 
 
    }
 
    return 0;
}
Хотя это только от ошибок компиляции избавит.
0
2 / 1 / 1
Регистрация: 28.10.2014
Сообщений: 129
04.11.2016, 15:52  [ТС] 10
Вот весь
Вложения
Тип файла: rar 3.rar (7.3 Кб, 4 просмотров)
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
04.11.2016, 15:56 11
Цитата Сообщение от Валерий_ Посмотреть сообщение
Вот весь
Раз уж используете Qt, то и использовали бы Qstring, в них unicode уже есть.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
04.11.2016, 16:09 12
Валерий_,
1. У вас в проекте не русская буква.
2. Какие ошибки/предупреждения выдаёт компилятор?
0
2 / 1 / 1
Регистрация: 28.10.2014
Сообщений: 129
04.11.2016, 16:46  [ТС] 13
Вот все ошибки...
Миниатюры
Case и русские символы  
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
04.11.2016, 16:50 14
Цитата Сообщение от Валерий_ Посмотреть сообщение
Вот все ошибки...
Это не ошибки, а предупреждения...
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
04.11.2016, 16:58 15
Лучший ответ Сообщение было отмечено Валерий_ как решение

Решение

Я вижу два простых варианта:
1. Использовать wchar_t или QChar.
2. Сменить кодировку.
1
2 / 1 / 1
Регистрация: 28.10.2014
Сообщений: 129
04.11.2016, 17:30  [ТС] 16
Что выбрать из wchar_t и QChar?
0
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
04.11.2016, 19:51 17
Цитата Сообщение от Валерий_ Посмотреть сообщение
А если передать код символа? И как его передать ?(2 необязательно)
А нет это кода в utf-8. Есть последовательность кодов, соответствующая одной букве. Вот поэтому и приходится плясать с бубном.
1
04.11.2016, 19:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2016, 19:51
Помогаю со студенческими работами здесь

Русские символы!!!!
Для русских символов я использую библиотеку #include &lt;russian.h&gt; Все работает нормально без ...

Русские символы
Написал программу. Компилю из под cygwin g++. Ругается: 4.cpp:27:18: предупреждение:...

Не выводятся русские символы
Программа не может вывести русские символы, но если оставить только функцию main то все...

Не печатает русские символы
Возник такой вопрос. Почему в консоле не выводятся кирилические символы? Когда я использую такой...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru