如何逐个字符处理UTF8 wxString

时间:2013-11-15 17:07:51

标签: c++ unicode ascii wxwidgets wxstring

wxWidgets,C ++,VS2010

我有一个wxString,其中包含来自非静态网页的显示文本(使用wxWebView& GetSelectedText())

我需要逐字符处理这个字符串,以便根据周围的字符从某些位置提取某些信息。

wxString是Unicode(有时是UTF8),所以这在循环获取每个字符的循环中效果不佳。

那么,如何将wxString转换为ASCII字符数组,每个字符1个字节? (也知道这个数组的长度)

我知道这将是一个“有损”的过程,我很高兴,因为我只是在寻找ASCII文本。

1 个答案:

答案 0 :(得分: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 ...
}