Подсчёт символов в строке

210
28 марта 2017, 13:59

У меня меня есть строка, в которой могут быть символы как английского, так и русского алфавитов, и мне не вполне понятно, как посчитать в такой строке количество символов.

string test = "ТестTest";
cout << test.length();

Как известно, в потоке выхода мы получим не количество символов, а количество байт, то есть не 8, а 12. А хотелось бы как-то узнать именно количество символов. Какое решение проблемы в данном ситуации будет правильным?

Answer 1

Самый простой вариант - использовать более широкие строки, чтобы символ помещался в один элемент. Пример:

#include <string>
#include <iostream>
int main() {
    std::wstring test = L"ТестTest";
    std::wcout << test.length();
}

Вывод:

8

Более правильный вариант - использовать соответствующие внешние библиотеки для поддержки Unicode, например, ICU.

READ ALSO
Задача по C++. Классы [требует правки]

Задача по C++. Классы [требует правки]

Задание :Создать класс согласно своему вариантуКласс должен содержать конструктор с умолчанием, конструктор с параметрами, методы чтения...

258
Различие define и const

Различие define и const

В чем различие между этими определениями переменной:

280
Как вывести введенную матрицу с++

Как вывести введенную матрицу с++

У меня возникла проблема, как вывести все введенные елементы массива, а не только последнюю строку матрицы

305