Учитывая std::string
, содержащий текст, закодированный в произвольном, но известном наборе символов. Каков самый простой способ на C++ считать символы? Он должен иметь возможность обрабатывать такие вещи, как объединение символов и кодов Unicode.Как подсчитать символы в строке, закодированной в произвольном наборе символов
Было бы неплохо иметь что-то вроде:
std::string test = "éäöü";
std::cout << test.size("utf-8") << std::endl;
К сожалению, жизнь не всегда легко с C++. :)
Для Unicode, я видел, что можно использовать библиотеку ICU: Cross-platform iteration of Unicode string (counting Graphemes using ICU)
Но есть более общее решение?
станд :: wstring приходит на ум – hanshenrik
зЬй :: wstring тест = TEXT ("éäöü"); std :: cout << test.length(); – hanshenrik
@hanshenrik: Интересно. Раньше не работал с 'wchar_t'. Что произойдет, если вы прочитаете строку из некоторого входного потока (например, файла или stdin)? – bitmask