Przeczytałem kilka postów na temat najlepszych praktyk dla łańcuchów i kodowania znaków w C++, ale trochę walczę ze znalezieniem ogólnego podejścia, które wydaje mi się dość proste i poprawne. Czy mogę prosić o komentarze na następujące tematy? Jestem skłonny użyć UTF-8 i UTF-32, oraz zdefiniowanie coś takiego:Łańcuchy i kodowanie znaków w C++
typedef std::string string8;
typedef std::basic_string<uint32_t> string32;
Klasa string8 byłyby wykorzystywane na UTF-8, posiadające odrębny typ jest tylko przypomnieniem o kodowaniu . Alternatywą byłoby, aby string8 był podklasą std :: string i aby usunąć metody, które nie są całkiem odpowiednie dla UTF-8.
Klasa string32 będzie używana w UTF-32, gdy wymagany jest stały rozmiar czcionki.
Funkcje CPF UTF-8, utf8 :: utf8to32() i utf8 :: utf32to8() lub jeszcze prostsze funkcje opakowania, będą używane do konwersji między tymi dwoma.
Należy zauważyć, że 'string8' jest wciąż tym samym typem co' std :: string'; to po prostu ma inną nazwę. –
Które funkcje 'std :: basic_string' są * w porządku dla UTF-8? – dalle
Co UTF-32 kupuje ponad Wstring/Unicode? btw Visual Studio definiuje 'u16tring' i' u32string'. –