wxWidgets, C ++, VS2010
У меня есть wxString, которая содержит отображаемый текст с нестатической веб-страницы (используя wxWebView & GetSelectedText ())
Мне нужно обрабатывать эту строку, символ за символом, чтобы извлечь определенную информацию из определенных мест на основе окружающих символов.
wxString — это Юникод (& иногда UTF8), хотя это не очень хорошо работает в цикле, получая каждый символ по очереди.
Итак, как я могу преобразовать из wxString в массив символов ASCII, 1 байт на символ? (а также знать длину этого массива)
Я знаю, что это будет процесс с потерями, я доволен этим, так как я только ищу текст, который является ASCII.
Это работает очень хорошо в цикле, 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 ...
}
Других решений пока нет …