Ich baue eine API, die es mir ermöglicht, Strings in verschiedenen Codierungen, einschließlich utf8, utf16, utf32 und wchar_t (das kann utf32 oder utf16 nach OS sein) zu holen.Neue Unicode-Zeichen in C++ 0x
Neue C++ Standard neue Typen
char16_t
undchar32_t
eingeführt hatte, die in Zukunft verwendet werden, nicht über diese sizeof Mehrdeutigkeit haben und sollte so möchte ich sie auch unterstützen, aber die Frage ist, würden sie stören mit normalenuint16_t
,uint32_t
,wchar_t
Typen, die keine Überlast zulassen, weil sie sich auf denselben Typ beziehen können?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 };
So kann ich nur schreiben:
foo.set(U"Some utf32 String"); foo.set(u"Some utf16 string");
Was die typedef von
std::basic_string<char16_t>
undstd::basic_string<char32_t>
sind wie heute:typedef basic_string<wchar_t> wstring.
Ich kann keinen Hinweis finden.
Edit: nach Header von gcc-4.4, die diese neuen Typen eingeführt:
typedef basic_string<char16_t> u16string; typedef basic_string<char32_t> u32string;
Ich möchte nur sicherstellen, dass diese Anforderung tatsächlichen Standard und nicht die gcc-ism.
Sie scheinen unbeabsichtigt meine Trivial s/Interfer/Interfer/Rechtschreibung corr umgekehrt Ektion. – ephemient
Danke, fusioniert Ihre Lösung zurück. – Artyom