std::u16string
とC++11を見ることができてうれしいですstd::u32string
が、なぜstd::u8string
UTF-8の場合を処理できないのか疑問に思っています。UTF-8を対象とした印象を受けてstd::string
いますが、うまく機能していないようです。std::string.length()
つまり、文字列内の文字数ではなく、文字列のバッファのサイズを返しませんか?
length()
では、新しいC ++ 11クラス用に定義された標準文字列のメソッドはどのようになっていますか?文字列のバッファのサイズ、コードポイントの数、または文字数を返しますか(サロゲートペアが2コードポイントであると仮定しますが、1文字です。間違っている場合は修正してください)。
そして、どうですかsize()
; 等しくないlength()
ですか?私の混乱の原因については、http://en.cppreference.com/w/cpp/string/basic_string/lengthを参照してください。
したがって、私の基本的な質問は、、、をどのように使用しstd::string
、バッファサイズ、コードポイントの数、std::u16string
およびstd::u32string
文字数を適切に区別するかということです。標準のイテレータを使用する場合、バイト、コードポイント、または文字を反復処理していますか?