2012-04-02 4 views
-1

Ich habe eine Reihe von C++ std::string, von denen einige Multibyte-Zeichen wie á, ä, ç, ß oder ñ haben. Wenn ich sie unter Verwendung von NSString stringWithUTF8String: in NSString umwandle, enthalten die resultierenden Zeichenfolgen seltsame Zeichen, die nicht gerendert werden können.Wie konvertiert man Multibyte UTF-8 std :: string in NSString?

Ich habe auch versucht NSString stringWithCString:encoding, aber ich habe keine Codierung gefunden, die funktioniert.

Was mache ich falsch?

-

Ich habe es endlich gelöst. Die Konvertierung war gut, aber die Zeichen wurden nicht im Debugger angezeigt, als sie mit dem Telefon verbunden waren, aber sie wurden gut angezeigt, wenn sie mit dem Debugger verbunden waren. Das Problem, das ich in meinem Programm hatte, war, dass der Textrenderer bestimmte Sonderzeichen nicht unterstützte ...

+0

Bitte fügen Sie ein Beispiel für den Inhalt dieser 'std :: string' ein. – kennytm

+1

In der Textdatei gibt es einen String wie diesen: áäñ, der "C3 A1 C3 A4 C3 B1" als UTF8 codiert ist (bitte beachten Sie, dass jedes Zeichen zwei Bytes benötigt). – gskbyte

+0

Wenn ich es in einer str :: string speichern, gibt length() 6 zurück, aber wenn ich es << cout, es ist gut gedruckt. – gskbyte

Antwort

0

Versuchen Sie, die std :: string direkt zu übergeben oder verwenden Sie die c_str() -Methode? Das sollte funktionieren:

std::string s = "á ä ç ß ñ"; 
[NSString stringWithUTF8String: s.c_str()]; 
+0

Ja, es funktioniert im iOS-Simulator, aber nicht im iPhone ... – gskbyte