Je construis une API qui me permet d'extraire des chaînes dans divers encodages, y compris utf8, utf16, utf32 et wchar_t (qui peut être utf32 ou utf16 selon OS).Nouveaux caractères Unicode en C++ 0x
Nouveau standard C++ a introduit de nouveaux types
char16_t
etchar32_t
qui n'ont pas cette ambiguïté sizeof et devraient être utilisés à l'avenir, donc je voudrais les soutenir aussi bien, mais la question est, seraient-ils interférer avecuint16_t
,uint32_t
,wchar_t
types ne permettant pas la surcharge parce qu'ils peuvent se rapporter au même type?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 };
Je peux écrire:
foo.set(U"Some utf32 String"); foo.set(u"Some utf16 string");
Quels sont les typedef de
std::basic_string<char16_t>
etstd::basic_string<char32_t>
comme aujourd'hui:typedef basic_string<wchar_t> wstring.
Je ne peux trouver aucune référence.
Edit: selon les en-têtes de gcc-4.4, qui ont introduit ces nouveaux types:
typedef basic_string<char16_t> u16string; typedef basic_string<char32_t> u32string;
Je veux juste vous assurer que c'est une exigence standard réelle et non gcc-isme.
Vous semblez avoir involontairement inversé mon correctif trivial s/interfer/interfere/orthographe ection. – ephemient
Merci, fusionné votre solution de retour. – Artyom