2013-04-26 9 views
5

Ho trovato questo argomento Convert between string, u16string & u32string e la soluzione (che sembra davvero eccezionale) funziona solo usando libC++ non libstdC++. Attualmente libC++ non è utilizzabile - è difficile da compilare e non funziona bene su Windows.Converti tra stringhe, u16string e u32string usando libstdC++

Esiste un metodo per la conversione tra queste rappresentazioni utilizzando C++ 11 e libstdC++, che funziona su tutte le piattaforme?

Sono particolarmente interessato alla conversione di u32_string in stringa (utf8) e viceversa.

+2

La conversione da una stringa Unicode a 32 bit in utf8 è molto semplice, si tratta di circa 10 righe di codice. Qualche ragione per cui non puoi semplicemente scrivere il codice? utf8 su una stringa Unicode a 32 bit non è molto più difficile. Questi formati sono semplici e ben documentati. – john

+1

Mi piacerebbe usare una libreria comprovata e non scherzare con essa. Non sapevo che fosse così semplice, ma sono sicuro che qualcuno lo ha fatto prima, quindi mi piacerebbe usarlo - credo fortemente nella riusabilità del codice;) –

+3

C'è sempre [boost.locale] (http: // www. boost.org/doc/libs/1_53_0/libs/locale/doc/html/index.html) – Cubbi

risposta

2

C'è un modo portatile in C++ 11 per farlo attraverso la classe wstring_convert.

Tuttavia, sembra che non è ancora implementata libstdC++ (come gcc 4.8)

Lo stesso vale per:

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

Infatti l'intestazione <codecvt> non è ancora presente nella distribuzione gcc .

Problemi correlati