u8string, u*cout im gcc-4.4.1
-
Hallo,
Ich wollte mal mit dem unicode-Support, der ja im neuen Standard Einzug erhält, etwas experimentieren. Leider habe ich gewisse Probleme und weiß nicht ob es nur am gcc liegt.
Laut den Infos, die ich bisher gefunden habe, gibt es folgende neue strings:
u8string -> utf-8
u16string -> utf16
u32string -> utf32
Und gleich der erste "Schock": Ich hab hier keinen u8string, müsste also wenn unicode gleich mit nem utf-16 arbeiten.Das nächste ist das cout.
Angeblich soll es ja entsprechend zu wstring auch für die neuen string-typedefs u.A. die cout's geben.
Die gibt es bei mir absolut nicht, hier nichteinmal für utf-16 und utf-32 (u16cout bzw. u32cout)!Kann das einer hier mit gcc-4.4.1 bestätigen?
Ich habe eine Standard-Gentoo-gcc-Installation auf einem 64-bitter (amd64).
Würde mich sehr freuen, wenn irgend jemand mich weiter schubsen könnte (wenn es geht muss ich wohl nen Gentoo-Bug melden)Thx
-
push...
Ich hab leider noch nix gefunden.
-
was sagt die Doku vom gcc darüber wie vollständig die Umsetzung des kommenden Standards schon ist? und IIRC muss man einen kommandozeilenparameter mitgeben, damit 0x-Features unterstützt werden, hast du das getan?
-
Also im C++0x Support in GCC ist nur die Sprache von Unicode string literalen. Also dass zB u"äöü" ein utf16 String ist.
u16string und u32string gibt es schon. u8string fehlt wohl noch. (Ist ja auch etwas schwieriger zu implementieren, wegen der dynamischen Zeichenlänge.)g++_unicode, wo hast du denn die Infos bzgl den passenden cout Varianten gefunden?
Aber die C++0x Umsetzung ist noch längst nicht abgeschlossen, daher machen solche Bug-Meldungen wohl kaum Sinn. Und an bugs.gentoo.org eh nicht.
#include <string> using namespace std; int main() { wstring strw = L"äöü"; /* length == 3 */ u16string stru16 = u"äöü"; /* length == 3 */ u32string stru32 = U"äöü"; /* length == 3 */ string str = "äöü"; /* length == 6 */ //... }zB mit
g++ -std=c++0x ...
-
lagalopex schrieb:
g++_unicode, wo hast du denn die Infos bzgl den passenden cout Varianten gefunden?
Hab ich zufällig hier gefgunden:
http://stackoverflow.com/questions/872491/new-unicode-characters-in-c0x
Wird aber erwähnt, dass das in diversen Standard-Drafts steht.#include <string> using namespace std; int main() { wstring strw = L"äöü"; /* length == 3 */ u16string stru16 = u"äöü"; /* length == 3 */ u32string stru32 = U"äöü"; /* length == 3 */ string str = "äöü"; /* length == 6 */ //... }zB mit
g++ -std=c++0x ...Ja, das ist schon klar, soweit hab ich das auch schon gefunden

Aber wahrscheinlich liegt es echt nur daran, dass die u*cout noch nicht zur Verfügung gestellt wurden, ich werd mir erstmal mit einem eigenen u16cout behelfen.Danke trotzdem!
