Проверка наличия символа в строке C++

309
11 ноября 2017, 13:25

Задача такова: необходимо ввести символ и проверить к какому алфавиту и регистру он принадлежит. С латинскими буквами все нормально,но проблемы возникают с кириллицей. Подскажите что не так в моей программе. Код данной задачи:

setlocale(LC_ALL,"Russian");
char i;
cin >> i;
char ENG [] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char eng [] = "abcdefghijklmnopqrstuvwxyz";
char RU [] = "АБВГДЭЕЖЗЫИКЛМНОПРСТУФХЦЧШЩЬЪЮЯЁ";
char ru [] = "aбвгдеёжзыиклмнопрстуфхцчшщьъюяё";
for (int h = 0;h <= 26;h++)
{
if(i == ENG[h]){cout  <<"ENG";break;}
if(i == eng[h]){cout <<"eng";break;}
                                        }
for (int b = 0;b <=33;b++)
{
    if(i == RU[b]){cout  <<"RU";break;}
    if(i == ru[b]){cout <<"ru";break;}
                                        }
return a.exec();
                                        }
Answer 1

Для проверки символа по ограниченному нулем массиву char используйте strchr, т.е. условие if(strchr(массив, символ)) вместо цикла.

P.S. Использовать i для символа, а b, h для индексов, это "удачный" способ затруднить чтение кода...

READ ALSO
Строгий алиасинг в MinGW-w64

Строгий алиасинг в MinGW-w64

При компиляции с MinGW-w64 этого простого кода:

270
Код на С++ который делает реверс звука [требует правки]

Код на С++ который делает реверс звука [требует правки]

Может ктото имет код на С++ в котором есть функция которая делает реверс звука, переключает канал с правого на левыйНужно чтоб изменялся канал...

255
QFutureWatcher и ожидание main потока QT

QFutureWatcher и ожидание main потока QT

Приветствую! Волнует одна большая для меня проблема которую никак не получается решитьРечь идет о многопоточности а именно пытаюсь реализовать...

288