0

wxWidgets、C++、VS2010

非静的 Web ページから表示されたテキストを含む wxString があります (wxWebView & GetSelectedText() を使用)

周囲の文字に基づいて特定の場所から特定の情報を抽出するために、この文字列を 1 文字ずつ処理する必要があります。

ただし、wxString は Unicode (および場合によっては UTF8) であるため、各文字を順番に取得するループではうまく機能しません。

では、wxString を 1 文字あたり 1 バイトの ASCII char 配列に変換するにはどうすればよいでしょうか? (そして、この配列の長さも知っています)

これが「損失の多い」プロセスになることは承知しています。ASCII のテキストのみを探しているので、満足しています。

4

1 に答える 1

0

ループ内で完全に機能しwxString::operator[]、文字列が内部で UTF-8 として表されている場合でも、バイトではなく、指定されたインデックスで文字を返します (Windows でのサロゲートの複雑さは無視します)。もちろん、これは効率的に実装できないことも意味するため、文字列を反復処理するための推奨される方法は次のとおりです。

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 に答える