Загрузка данных


#include <iostream>
#include <string>
#include <windows.h>

using namespace std;

// Функция подсчета реальных символов (букв), а не байтов в кодировке UTF-8
int get_length(const string& s) {
    int count = 0;
    for (unsigned char c : s) {
        // Пропускаем байты продолжения символов UTF-8 (они начинаются с бит 10xxxxxx)
        if ((c & 0xC0) != 0x80) {
            count++;
        }
    }
    return count;
}

int main() {
    // Включаем UTF-8 для консоли
    SetConsoleCP(CP_UTF8);
    SetConsoleOutputCP(CP_UTF8);

    string str;  // Исходная строка
    string word; // Добавляемое слово

    cout << "Введите исходную строку: ";
    getline(cin, str); // Считываем всю строку с пробелами

    cout << "Введите новое слово (ровно 5 символов): ";
    cin >> word; // Считываем слово

    // Проверяем РЕАЛЬНОЕ число букв через нашу функцию
    if (get_length(word) == 5) {
        // Добавляем пробел перед словом, если в конце строки его еще нет
        if (!str.empty() && str.back() != ' ') {
            str += " ";
        }
        str += word;

        cout << "\nРезультат после добавления: " << str << endl;
    } else {
        cout << "\n[Ошибка]: длина слова не равна 5 символам! (Введено символов: " 
             << get_length(word) << ")" << endl;
    }

    system("pause");
    return 0;
}