0

Следующий код:

#include <iostream>
#include <string>

using namespace std;

int main() { setlocale(LC_ALL, ""); int n; string str; cout << "Введите строку: " << endl; cin >> str; int l = str.size(); cout << l << " " << str << endl; for (int i=0; i<l; i++) cout << str[i] << " ";

return 0;

}

должен считывать строку, посчитать кол-во символов в ней и вывести их через пробел, если строка вводится на английском, то всё работает корректно, если на русском, то получается:

Подберёзовик
24 Подберёзовик
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Process exited with status 0
  • В этом цикле выводятся не символы, а байты. Там почти наверняка используется кодировка UTF-8 где символы переменной длины. Хочется работать с юникодом - ставьте библиотеку ICU. Ну или самостоятельно напишите алгоритм итерации, благо он не сложный. – user7860670 Dec 26 '22 at 18:26
  • как поставить ее на с++? – alexey.qqq Dec 26 '22 at 18:31

0 Answers0