C++で書かれたWindowsアプリケーションで入力UTF-8シーケンスを検証したいと思います。Windows C++アプリケーションで入力UTF-8シーケンスを検証する
私の考えは、MultiByteToWideChar()
を呼び出すだけで、目的の文字列の長さを(文字列変換全体をUTF-16にするのではなく)要求し、MB_ERR_INVALID_CHARS
フラグを使用していました。
次に、関数が0(失敗を意味する)を返し、GetLastError()
がERROR_NO_UNICODE_TRANSLATION
を返した場合、入力UTF-8シーケンスに無効なデータが含まれている可能性があります。
良いアプローチがありますか?
あなたは「より良い」*を求めているので、どの面を改善する必要がありますか? – IInspectable
@IInspectable:もっと良い解決策がなければ、私は自分のものとうまくいっています。より速く、またはいくつかの_ad hoc_ APIを使用して検証することができます(私の理解はMBTWCが翻訳を念頭に置いて設計されており、必要なものがUTF-8の検証であればオーバーヘッドが生じる可能性があるためです)。 –