Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Валерий_
0 / 0 / 0
Регистрация: 28.10.2014
Сообщений: 75
Завершенные тесты: 1
#1

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

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

Здравствуйте,
Есть массив 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2016, 13:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Case и русские символы (C++):

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

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

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

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

Русские символы!!!! - C++
Для русских символов я использую библиотеку #include <russian.h> Все работает нормально без using namespace std; #include...

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

16
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,080
Записей в блоге: 10
Завершенные тесты: 1
04.11.2016, 14:17 #2
Похоже что у вас кодировка исходного файла из разряда Unicode.
Пробуйте так: case L'a':
0
Renji
1964 / 1362 / 308
Регистрация: 05.06.2014
Сообщений: 3,894
04.11.2016, 14:49 #3
Цитата Сообщение от Валерий_ Посмотреть сообщение
И если так , то как мне узнать лежит ли в массиве по индексу i нужная мне буква(ы) или нет?
С бубном. Чтобы без бубна, нужно пользоваться wchar_t. То есть, перегнать текст в utf-16. Ну и как сказали выше, использовать L'а'.
0
Валерий_
0 / 0 / 0
Регистрация: 28.10.2014
Сообщений: 75
Завершенные тесты: 1
04.11.2016, 15:12  [ТС] #4
А если передать код символа? И как его передать ?(2 необязательно)
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,080
Записей в блоге: 10
Завершенные тесты: 1
04.11.2016, 15:21 #5
Цитата Сообщение от Валерий_ Посмотреть сообщение
А если передать код символа? И как его передать ?(2 необязательно)
Куда передать? Зачем передать? Какой код символа?
0
Валерий_
0 / 0 / 0
Регистрация: 28.10.2014
Сообщений: 75
Завершенные тесты: 1
04.11.2016, 15:27  [ТС] #6
Цитата Сообщение от castaway Посмотреть сообщение
Куда передать? Зачем передать? Какой код символа?
Case L'a' - не прошло.
Я и подумал, что может быть вместо 'а' нужно передать его код, или он сразу вопринимает 'a' , как (char)(1072)?
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,080
Записей в блоге: 10
Завершенные тесты: 1
04.11.2016, 15:37 #7
Цитата Сообщение от Валерий_ Посмотреть сообщение
Я и подумал, что может быть вместо 'а' нужно передать его код, или он сразу вопринимает 'a' , как (char)(1072)?
Мне кажется что вы где-то лажаете без нашего ведома. Прикрепите весь проект в виде архива.
0
Валерий_
0 / 0 / 0
Регистрация: 28.10.2014
Сообщений: 75
Завершенные тесты: 1
04.11.2016, 15:47  [ТС] #8
Ну вот это функция из заголовочного файла.
0
Вложения
Тип файла: zip 2.zip (359 байт, 1 просмотров)
GbaLog-
Любитель чаепитий
3029 / 1397 / 337
Регистрация: 24.08.2014
Сообщений: 4,962
Записей в блоге: 1
Завершенные тесты: 2
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
Валерий_
0 / 0 / 0
Регистрация: 28.10.2014
Сообщений: 75
Завершенные тесты: 1
04.11.2016, 15:52  [ТС] #10
Вот весь
0
Вложения
Тип файла: rar 3.rar (7.3 Кб, 3 просмотров)
GbaLog-
Любитель чаепитий
3029 / 1397 / 337
Регистрация: 24.08.2014
Сообщений: 4,962
Записей в блоге: 1
Завершенные тесты: 2
04.11.2016, 15:56 #11
Цитата Сообщение от Валерий_ Посмотреть сообщение
Вот весь
Раз уж используете Qt, то и использовали бы Qstring, в них unicode уже есть.
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,080
Записей в блоге: 10
Завершенные тесты: 1
04.11.2016, 16:09 #12
Валерий_,
1. У вас в проекте не русская буква.
2. Какие ошибки/предупреждения выдаёт компилятор?
0
Валерий_
0 / 0 / 0
Регистрация: 28.10.2014
Сообщений: 75
Завершенные тесты: 1
04.11.2016, 16:46  [ТС] #13
Вот все ошибки...
0
Миниатюры
Case и русские символы  
GbaLog-
Любитель чаепитий
3029 / 1397 / 337
Регистрация: 24.08.2014
Сообщений: 4,962
Записей в блоге: 1
Завершенные тесты: 2
04.11.2016, 16:50 #14
Цитата Сообщение от Валерий_ Посмотреть сообщение
Вот все ошибки...
Это не ошибки, а предупреждения...
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,080
Записей в блоге: 10
Завершенные тесты: 1
04.11.2016, 16:58 #15
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я вижу два простых варианта:
1. Использовать wchar_t или QChar.
2. Сменить кодировку.
1
04.11.2016, 16:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2016, 16:58
Привет! Вот еще темы с ответами:

Русские символы и substr - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { setlocale( LC_ALL,&quot;Russian&quot; ); string sTmp; ...

Не подсчитывает русские символы - C++
Не пойму в чём загвостка; логически вроде всё верно: #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;cstdlib&gt; #include &lt;stdexcept&gt;...

Русские символы из ASCII - C++
Программа отправляет &quot;POST&quot; запрос в гугл Speech и сохраняет ответ. Но сохраняет в ASCII. Текстовый редактор читает это нормально, а вот...

Русские символы в BC31 - C++
Как в Borland C++ 3.1 печатать русские буквы?? И как их считать их файла?? CharToOem не работает.


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru