Najnowsze wersje wydane wersje clang, v2.9 z llvm.org lub Apple clang 3.0, nie obsługują literałów łańcuchowych Unicode. Najnowsza wersja dostępna w wersji, zbudowana ze źródła głównego pnia, obsługuje literały łańcuchów znaków Unicode.
Następna wersja cll (llv, 3.0) llvm.org będzie obsługiwać składnię literową w standardzie Unicode, ale nie obsługuje żadnego kodowania plików źródłowych poza ASCII. Nawet z tym wydaniem llvm.org nie będziesz mógł wpisać tych znaków dosłownie w swoim źródle i przekonwertować je na zakodowaną wartość ciągu UTF-16. Zamiast tego będziesz musiał użyć \ u ucieczek. Znowu, góra bagażnika obsługuje kod źródłowy UTF-8, ale nie dostał się w porę do wydania llvm.org 3.0, które jest obecnie testowane. Następne wydanie po tym (w ciągu 6 miesięcy) powinno lepiej obsługiwać kod źródłowy UTF-8 (ale nie inne kodowania źródłowe).
Edytuj: Wersja klang Xcode 4.3 ma te funkcje.
Edit: A teraz 3,1 uwolnienie od LLVM.org ma je
Więc dzyń teraz w pełni obsługuje następujące:
#include <string>
int main() {
std::u16string a = u"鵝"; // UTF-8 source is transformed into UTF-16 literal
std::u32string b = U"滿"; // UTF-8 source is transformed into UTF-32 literal
}
Okazuje się średnia faktycznie nie wymagają dużego wsparcia dla char16_t i char32_t w bibliotece iostreams, więc prawdopodobnie będziesz musiał przekonwertować na inny typ łańcucha, aby uzyskać wiele korzyści z tego. Konieczna jest przynajmniej możliwość konwersji między tymi i bardziej użytecznymi std :: string (choć nie jest to wygodne, aby je skonfigurować ...).
Czy jesteś pewien, że Clang obsługuje nowe literały ciągu znaków Unicode? –