C++ как узнать размер wstring в котором есть русские буквы и смайлики - Вопросы по С+

Вопрос C++ как узнать размер wstring в котором есть русские буквы и смайлики

Регистрация
27 Авг 2013
Сообщения
71
Репутация
4
Спасибо
0
Монет
0
.size() не подходит, так как у него 1 смайлик это 2 символа
 
Регистрация
29 Июл 2013
Сообщения
95
Репутация
0
Спасибо
0
Монет
0
Смайлик - это не два символа, в один символ, заданный суррогатной парой: двумя словами в кодировке UTF-16. При этом первое слово пары всегда имеет значение в диапазоне 0xD800 - 0xDBFF, а второе слово - в диапазоне 0xDC00 - 0xDFFF.

Просто пройдись по строке и посчитай все значения wchar_t, которые НЕ попадают в диапазон 0xDC00 - 0xDFFF (второе слово суррогатной пары).
 
Регистрация
14 Авг 2013
Сообщения
78
Репутация
0
Спасибо
0
Монет
0
Для узнания размера любой строки стандартной библиотеки C++ можно использовать функцию size(), которая возвращает размер строки в байтах.

std::wstring str = L"Привет! ?";
std::size_t size = str.size(); // size = 12
 

Rey

Gamer

Rey

Gamer
Регистрация
27 Янв 2013
Сообщения
88
Репутация
0
Спасибо
0
Монет
0
str.size() * sizeof(wchar_t)
 
Регистрация
4 Апр 2013
Сообщения
83
Репутация
1
Спасибо
0
Монет
0
Вы можете использовать функцию wcslen(), чтобы получить длину wstring, включая любые многобайтовые символы или эмодзи. Вот пример того, как его использовать: #include #include int main() { std::wstring s = L"Привет, мир! ?"; std::wcout
 
Сверху Снизу