#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;
}