2 つの文字列を比較するコードを作成しようとしています。Windows では strcmp を使用できますが、他のすべてのプラットフォームと互換性があるように、マルチバイト文字列を書きたいです memcmp を使用できますか? いいえの場合、使用できる他の API があるか、独自の API を作成する必要があります。
3 に答える
あなたは注意する必要があります。私はUnicode/マルチバイトエンコーディングの専門家ではありませんが、発音区別符号では、バイトが完全に同じでない場合に2つの文字列が等しいと見なされることがあることを知っています。文字列のエンコーディングはかなり乱雑になる可能性があるため、事前にテストされたAPIを使用することをお勧めします。
ケースマッピングに関する古い新しいものを参照してください。発音区別符号のリファレンスは思いつかないが、もしそうなら投稿する。
2 つの文字列が同じエンコーディングを使用している場合は、memcmp
. UTF-8 を使用していて、文字列に NULL 文字 (U+0000) が含まれていない場合は、 を使用することもできますstrcmp
。これは、NULL 自体がない場合、UTF-8 でエンコードされた文字列に 0 が表示されないためです。別のオプションは、 を使用して文字列をワイド文字に変換することmbstowcs
です。
文字列が両方とも同じエンコーディングを使用している場合は、正常にmemcmp
機能します。ただし、ワイド文字はプラットフォームごとにサイズが異なることに注意してください。
文字列が異なるエンコーディングを使用している場合は、それを処理するためにICUなどのライブラリが必要になります。