2013-04-26 27 views
5

Tôi tìm thấy chủ đề này Convert between string, u16string & u32string và giải pháp (trông rất tuyệt) chỉ hoạt động bằng cách sử dụng libC++ chứ không phải libstdC++. Hiện tại libC++ không thể sử dụng được - khó biên dịch và không hoạt động tốt trên Windows.Chuyển đổi giữa chuỗi, u16string & u32string sử dụng libstdC++

Có phương pháp nào để chuyển đổi giữa các biểu diễn này bằng C++ 11 và libstdC++, hoạt động trên tất cả các nền tảng không?

Tôi đặc biệt quan tâm đến việc chuyển đổi u32_string thành chuỗi (utf8) và ngược lại.

+2

Chuyển đổi từ chuỗi Unicode 32 bit thành utf8 rất đơn giản, đó là khoảng 10 dòng mã. Bất kỳ lý do bạn không thể chỉ viết mã? utf8 đến một chuỗi Unicode 32-bit không phải là cực kỳ khó khăn hơn. Các định dạng này đơn giản và được ghi lại đầy đủ. – john

+1

Tôi rất thích sử dụng thư viện đã được chứng minh và không gây rối với bản thân. Tôi không biết nó đơn giản như vậy, nhưng tôi chắc chắn ai đó đã làm nó trước đây, vì vậy tôi rất thích sử dụng nó - Tôi thực sự mạnh mẽ trong khả năng tái sử dụng mã;) –

+3

Luôn có [boost.locale] (http: // www. boost.org/doc/libs/1_53_0/libs/locale/doc/html/index.html) – Cubbi

Trả lời

2

Có một cách di động trong C++ 11 để thực hiện việc này thông qua lớp wstring_convert.

Tuy nhiên, có vẻ như nó vẫn chưa được thực hiện libstdC++ (như của gcc 4.8)

cũng áp dụng như:

codecvt<char16_t, char, mbstate_t>. 
codecvt<char32_t, char, mbstate_t>. 
codecvt_utf8. 
codecvt_utf16. 
codecvt_utf8_utf16. 

Trong thực tế, tiêu đề <codecvt> vẫn chưa có mặt trong phân phối gcc .

Các vấn đề liên quan