Уважаемые форумчане! Кто подскажет, как корректно подсчитать число символов в строке. Функцию length() не предлагать, ибо полный неадекват при подсчёте символов в строке utf-8. Для php существует функция mb_strlen. А для Си что-то подобное есть?
Спасибо всем за участие, особенно b707. Не особо силён писать короткие "5 строчек", но используя широко известную в узких кругах функцию utf8rus получилось такое: Код (C++): // Функция подсчёта количества символов в строке utf8, // состоящей из букв английского и русского алфавитов, цифр, общепринятых символов... int mb_strlen(String source) // как в php :) { int i,k; int target = 0; unsigned char n; char m[2] = { '0', '\0' }; k = source.length(); i = 0; while (i < k) { n = source[i]; i++; if (n >= 0xBF){ switch (n) { case 0xD0: { n = source[i]; i++; if (n == 0x81) { n = 0xA8; break; } if (n >= 0x90 && n <= 0xBF) n = n + 0x2F; break; } case 0xD1: { n = source[i]; i++; if (n == 0x91) { n = 0xB7; break; } if (n >= 0x80 && n <= 0x8F) n = n + 0x6F; break; } } } m[0] = n; target = target + 1; } return target - 2; } Главное, что работает! Уверен, найдётся немало желающих попинать на длинный код. Извиняйте....