C++.Символы, сравнение символов

253
03 ноября 2017, 11:14

Суть программы в том, что для введеного символа надо вывести латинский или русский это символ, также учесть его регистр. Подскажите как сделать это проще.

  setlocale(LC_ALL,"Russian");
  char i;
  cin >>i;
  char e1 = 'A';
  char e2 = 'Z';
  char e3 = 'a';
  char e4 = 'z';
  char ru1 = 'А';
  char ru2 = 'Я';
  char ru3 = 'а';
  char ru4 = 'я';
  if ((i>=e1)&&(i<=e2)){cout <<"ENG";}
  if ((i>=e3)&&(i<=e4)){cout <<"eng";}
  if ((i>=ru1)&&(i<=ru2)){cout <<"RU";}
  if ((i>=ru3)&&(i<=ru4)){cout <<"ru ";}
  else{cout <<"error";}
  return a.exec();
Answer 1

Эта функция проверяет, является ли символ символом в верхнем регистре:

isupper(character)

Эта функция проверяет, является ли символ символом в нижнем регистре:

islower(character)

Можете использовать их и сократить свои условные выражения

if ((i>=ru1)&&(i<=ru2)){cout <<"RU";}
if ((i>=ru3)&&(i<=ru4)){cout <<"ru ";}

Проверьте только, как эти функции реагируют на русский алфавит. А реагируют они плохо. Вот в этом вопросе обсуждалась эта проблема. Обратите внимание, в ответе говорится, что в настройках студии можно поставить ключ, делающий char беззнаковым, а можно использовать wchar_t. Также можете посмотреть в сторону std::locale из <locale>.

READ ALSO
Асинхронный ввод и вывод данных

Асинхронный ввод и вывод данных

Есть сервер на Qt/c++, он слушает определенный порт и принимает с него данныеКогда к нему поступают какие-нибудь данные, они выводятся на консоль

256
В чем заключается ошибка в функции?

В чем заключается ошибка в функции?

В функции matrix_sum видает ошибку , подскажите что я не так написал?

383
Идеальное выравнивание (SSE SIMD)

Идеальное выравнивание (SSE SIMD)

Как можно сделать идеальное выравнивание ? К примеру

232
Смещение мировых координат в OpenGL

Смещение мировых координат в OpenGL

Всем доброго времени сутокОтлавливаю клики мыши, затем преобразую каждый клик, который является центром примитива, в некоторый набор точек

365