0

wxWidgets, C++, VS2010

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

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

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

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

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

4

1 回答 1

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 ...
}
于 2013-11-15T18:11:54.740 回答