【问题标题】:How to process a UTF8 wxString character by character如何逐字符处理 UTF8 wxString 字符
【发布时间】:2013-11-15 17:07:51
【问题描述】:

wxWidgets, C++, VS2010

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

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

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

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

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

【问题讨论】:

  • 那些不能用ASCII表示的字符,应该被忽略或者替换成什么东西还是……?
  • 正如我所提到的,我很高兴这是一次有损转换。扩展字符可以转换为任意值,甚至丢失。

标签: c++ unicode ascii wxwidgets wxstring


【解决方案1】:

它在循环中运行得非常好,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 ...
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-02
    • 2010-11-25
    • 2016-08-28
    • 2017-01-19
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多