は、UTF-8のテキストを格納する文字列とwstringの両方を使用することが可能です。文字でのstd ::文字列とUTF-8エンコードされたUnicode
、ASCII文字は1バイトを取り、いくつかの漢字は
str[3]
は必ずしも第四文字を指していないことを意味しているなど3または4を取ります。wchar_t
同じことが、文字ごとに使用されるバイト数の最小量では常に(
char
のための代わりの1)2であり、3または4バイト幅の文字は2wchar_t
がかかります。
右でしょうか?
だから、string::find_first_of()
やstring::compare()
などを奇妙にコード化された文字列で使用したいのですが?それは働くでしょうか?文字列クラスは、文字が可変サイズであるという事実を処理しますか?または、ダミーのフィーチャーレスバイト配列としてのみ使用する必要があります。この場合は、むしろwchar_t[]
バッファーを使用します。
std::string
がそれを処理しない場合、2番目の質問:str[3]
が実際に3番目の文字を指し示すように、そのUTF-8エンコーディングを処理できる文字列クラスを提供するライブラリがあるかどうか(長さ1から4のバイト配列)?
「str [3]」が4番目のコードポイントであっても、必ずしも4番目に認識される文字ではないことに注意してください。 – delnan
@delnan _Ok申し訳ありません(私はwchar_t、Windows、UTF-16についてのサンプル記事を選んだところです)。編集が遅すぎたので、私はコメントを削除しました。ここでは、 "議論の余地のない"リンクがない部分があります。_ wchar_tのサイズは実装定義であると思うので、常に2バイトではありません。さらに(IIRC)Windowsは、UTF-8ではなくUTF-16のようなものを格納するためにWindowsを使用しています。 http://en.wikipedia.org/wiki/Wide_character –