Там нет такого понятия, как «характер».
Или, точнее, какой «характер» зависит от того, кого вы спрашиваете.
Если вы посмотрите в Unicode glossary, вы обнаружите, что этот термин имеет несколько не полностью совместимых значений. Как самый маленький компонент письменного языка, который имеет смысловое значение (первое значение), á
- это один символ. Если вы принимаете á
и подсчитываете базовую единицу кодирования для кодировки символов Юникода (в третьем смысле), вы можете получить один или два, в зависимости от того, какое точное представление (нормализованное или денормализованное) используется.
Возможно, нет. Это очень сложный вопрос, и никто не знает, что они говорят.
Спустившись на землю, вам, вероятно, нужно будет пересчитывать кодовые точки, которые по существу совпадают с символами (что означает 3). mblen
- это один из способов сделать это, если ваш текущий язык имеет кодировку UTF-8. Современные C++ предлагают more C++-ish methods, однако они не поддерживаются в некоторых популярных реализациях. Boost имеет something of its own и более портативен. Тогда есть специализированные библиотеки, такие как ICU, которые вы можете рассмотреть, если ваши потребности намного сложнее, чем подсчет символов.
Вы используете C или C++?Я думаю, нам следует сказать –
Извините, я использую C++ – Luka
Вы ищете алгоритм, который вы можете реализовать самостоятельно, или используете библиотеку (на какой ОС?) Нормально? – hyde