Тип char використовується для зберігання окремих символів. Займає 1 байт пам'яті.
#include <iostream> using namespace std; int main() { // Оголошення змінних типу char char symbol1 = 'A'; char symbol2 = 65; // ASCII код для 'A' char symbol3 = 'Я'; // Українська літера // Виведення символів cout << "symbol1: " << symbol1 << endl; cout << "symbol2: " << symbol2 << endl; cout << "symbol3: " << symbol3 << endl; // Виведення ASCII кодів cout << "Код symbol1: " << (int)symbol1 << endl; cout << "Код symbol3: " << (int)symbol3 << endl; return 0; }
Отримати код символу можна за допомогою явного перетворення:
char c = '5';
int k = (int)c; cout<<k;
Отримати символ за його кодом можна за допомогою явного перетворення:
int k = 100;
char c = (char)k;
cout<<c;
#include <iostream> #include <cstring> // для функцій роботи з рядками int main() { // Оголошення рядків char str1[] = "Привіт"; // автоматичне визначення довжини char str2[20] = "Світ"; // фіксований розмір char str3[50]; // Копіювання рядків strcpy(str3, str1); // копіюємо str1 в str3 strcat(str3, " "); // додаємо пробіл strcat(str3, str2); // додаємо str2 cout << "Результат: " << str3 << endl; cout << "Довжина: " << strlen(str3) << " символів" << endl; return 0;}
Тип wchar_t використовується для роботи з широкими символами (Unicode). Розмір залежить від системи (зазвичай 2 або 4 байти).
#include <iostream> #include <cwchar> int main() { // Широкі символи та рядки wchar_t wideChar = L'ї'; // префікс L для широких символів wchar_t wideString[] = L"Привіт світ 🌍"; // Використання wcout для виведення широких рядків wcout.imbue(locale("uk_UA.UTF-8")); // встановлюємо локаль wcout << L"Символ: " << wideChar << endl; wcout << L"Рядок: " << wideString << endl; wcout << L"Довжина рядка: " << wcslen(wideString) << endl; return 0; }
| Характеристика | char | wchar_t |
|---|---|---|
| Розмір | 1 байт | 2 або 4 байти (залежить від системи) |
| Кодування | ASCII / UTF-8 | UTF-16 / UTF-32 |
| Підтримка Unicode | Обмежена (через UTF-8) | Повна |
| Потоки введення/виведення | cin/cout | wcin/wcout |
| Функції для роботи з рядками | strlen, strcpy, strcat | wcslen, wcscpy, wcscat |
#include <iostream> #include <locale> #include <codecvt> #include <string> int main() { // Звичайний рядок char narrowStr[] = "Привіт Україна 🇺🇦"; // Конвертація в широкий рядок std::wstring_convert<std::codecvt_utf8<wchar_t>> converter; std::wstring wideStr = converter.from_bytes(narrowStr); wcout.imbue(locale("uk_UA.UTF-8")); wcout << L"Широкий рядок: " << wideStr << endl; wcout << L"Довжина: " << wideStr.length() << L" символів" << endl; return 0; }
#include <iostream> #include <string> #include <locale> int main() { // Встановлення локалі для української мови setlocale(LC_ALL, "uk_UA.UTF-8"); // Український текст у звичайних рядках char ukrainianText[] = "Це український текст: ґедзь, європа, їжачок"; cout << ukrainianText << endl; // Підрахунок голосних літер char vowels[] = "аеиіоуяюєїАЕИІОУЯЮЄЇ"; int vowelCount = 0; for (int i = 0; ukrainianText[i] != '\0'; ++i) { for (int j = 0; vowels[j] != '\0'; ++j) { if (ukrainianText[i] == vowels[j]) { vowelCount++; break; } } } cout << "Кількість голосних: " << vowelCount << endl; return 0; }
Для введення можна використовувати функцію cin. Символи вводяться в рядок або стовпчик. Вводити в рядок можна через пробіл або без пробілу.
Ця функція при вводі пропускає пробіли та символи кінця рядку, які виводяться у буфер вводу при натисканні клавіши Enter.
Наприклад:
|
Вводити можна так:
|
Можна так:
|
А можна так:
|
Ввід виконується, доки не буде введено потрібну кількість символів. Будь-які символи, які були введені після необхідної кількості (у тому числі Enter), залишаються у буфері.
Написати програму, яка зчитує рядок від користувача та підраховує кількість українських літер "і", "ї", "є".
Створити функцію для конвертації рядка у верхній регістр з урахуванням українських літер.
Реалізувати програму, яка використовує широкі рядки для зберігання та виведення тексту з емодзі.