utf8、utf16、utf32、wchar_t (OS によっては utf32 または utf16) など、さまざまなエンコーディングで文字列を取得できる API を構築しています。
新しい C++ 標準では新しい型が導入されて
char16_t
おりchar32_t
、この sizeof あいまいさがなく、将来使用する必要があるため、それらもサポートしたいと思いますが、問題は、オーバーロードを許可しない通常の, ,型と干渉するかどうかです。同じタイプを参照できますか?uint16_t
uint32_t
wchar_t
class some_class { public: void set(std::string); // utf8 string void set(std::wstring); // wchar string utf16 or utf32 according // to sizeof(wchar_t) void set(std::basic_string<uint16_t>) // wchar independent utf16 string void set(std::basic_string<uint32_t>); // wchar independent utf32 string #ifdef HAVE_NEW_UNICODE_CHARRECTERS void set(std::basic_string<char16_t>) // new standard utf16 string void set(std::basic_string<char32_t>); // new standard utf32 string #endif };
だから私はただ書くことができます:
foo.set(U"Some utf32 String"); foo.set(u"Some utf16 string");
今日の typedef とは何ですか
std::basic_string<char16_t>
:std::basic_string<char32_t>
typedef basic_string<wchar_t> wstring.
参照が見つかりません。
編集: gcc-4.4 のヘッダーによると、これらの新しいタイプが導入されました:
typedef basic_string<char16_t> u16string; typedef basic_string<char32_t> u32string;
これが実際の標準要件であり、gcc-ism ではないことを確認したいだけです。