Стандарт ASCII обмежується лише 128 символами (коди від 0 до 127). Кодова таблиця Unicode має коди від 0 до 1114111 (0x10FFFF), включаючи всі мови світу, емодзі та графічні символи. Тому, якщо потрібні символи з кодами понад 127, слід використовувати Unicode.
Для цього використовують wcin і wcout замість cin і cout.
#include <iostream> // підключаємо бібліотеку для введення/виведення
#include <clocale> // для встановлення локалі
#include <limits> // для numeric_limits
using namespace std;
// Функція перевіряє, чи є символ кириличною літерою
bool isCyrillicChar(wchar_t c) {
return (c >= L'а' && c <= L'я') || (c >= L'А' && c <= L'Я');
}
int main() {
setlocale(LC_ALL, ""); // встановлюємо локаль для підтримки Юнікоду
wcout << L"Введіть кількість символів: ";
int numCharacters;
wcin >> numCharacters;
// Очищення буфера вводу від залишкових символів (наприклад, '\n')
wcin.ignore(numeric_limits<streamsize>::max(), L'\n');
wcout << L"Введіть символи: ";
wchar_t inputChar;
int cyrillicCount = 0; // лічильник кириличних літер
int latinCount = 0; // лічильник латинських літер
for (int i = 0; i < numCharacters; ++i) {
wcin >> inputChar; // зчитуємо символ
// перевіряємо, чи латинська літера
if ((inputChar >= L'a' && inputChar <= L'z') ||
(inputChar >= L'A' && inputChar <= L'Z')) {
latinCount++;
}
// перевіряємо, чи кирилична літера
else if (isCyrillicChar(inputChar)) {
cyrillicCount++;
}
}
int totalLetters = cyrillicCount + latinCount;
wcout << L"Кількість кириличних та англійських літер: " << totalLetters << endl;
return 0;
}
wcin.ignore(numeric_limits<streamsize>::max(), L'\n'); – очищує буфер вводу після зчитування чисел чи рядків, щоб уникнути пропусків під час подальшого читання.