私は、utf8、utf16、utf32、wchar_t(OSによってはutf32またはutf16かもしれません)を含むさまざまなエンコーディングで文字列を取得できるAPIを作成しています。新しいC++標準では、このはsizeofの曖昧さを持っていないと、将来的に使用しなければならないので、私は同様にそれらをサポートしたいと思いますが、質問がある新しいタイプchar16_t
とchar32_t
を導入していたC++の新しいユニコード文字0x
、彼らが干渉するは通常の
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");
を今日があるよう
std::basic_string<char16_t>
とstd::basic_string<char32_t>
のtypedefはどのようなものです:typedef basic_string<wchar_t> wstring.
私はすべての参照を見つけることができません。
編集:私はちょうどこれは、実際の標準的な要件であることを確認してくださいとgcc-ISMないようにしたい
typedef basic_string<char16_t> u16string; typedef basic_string<char32_t> u32string;
:これらの新しいタイプを導入GCC-4.4のヘッダに記載の方法。
私の些細なことを意図せずに戻したようです。/干渉/干渉/スペリングcorr 。 – ephemient
ありがとうございました。修正を元に戻しました。 – Artyom