Как обработать символьную строку UTF8 wxString

wxWidgets, C ++, VS2010

У меня есть wxString, которая содержит отображаемый текст с нестатической веб-страницы (используя wxWebView & GetSelectedText ())

Мне нужно обрабатывать эту строку, символ за символом, чтобы извлечь определенную информацию из определенных мест на основе окружающих символов.

wxString — это Юникод (& иногда UTF8), хотя это не очень хорошо работает в цикле, получая каждый символ по очереди.

Итак, как я могу преобразовать из wxString в массив символов ASCII, 1 байт на символ? (а также знать длину этого массива)

Я знаю, что это будет процесс с потерями, я доволен этим, так как я только ищу текст, который является ASCII.

0

Решение

Это работает очень хорошо в цикле, wxString::operator[] возвращает вам символ (ну, игнорируя суррогатные сложности под Windows) по заданному индексу, а не по байту, даже если строка внутренне представлена ​​как UTF-8. Конечно, это также означает, что это не может быть эффективно реализовано, поэтому предпочтительный способ перебора строки:

for ( wxString::const_iterator it = s.begin(); it != s.end(); ++it ) {
wchar_t wch = *it;
... do whatever you need with wch ...
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]