エンコード文字列のUTF-32に、codeunit_size()
、codeunit_at()
、codeunit_substr()
、およびイテレータを実装しました。
#include <iostream> #include <shand/encoding_string.hpp> int main() { using namespace shand; encoding_string<encoding::utf32> s = U"あいうえお"; // 文字数を取得 std::cout << s.codeunit_size() << std::endl; // 5 // i番目の文字を取得 std::cout << s.codeunit_at(2) << std::endl; // U"う" // 部分文字列を取得 std::cout << s.codeunit_substr(2, 3) << std::endl; // U"うえお" std::cout << s.codeunit_substr(2) << std::endl; // U"うえお" // 1文字ずつ出力 for (decltype(s)::value_type x : s) { std::cout << x << std::endl; } }
5 う うえお うえお あ い う え お
UTF-32はサロゲートペアもないので、BOMを無視してる以外はとくに何もしていません。