Wie konvertiert man std::string zu NSString?
Hallo, ich bin versucht zu konvertieren standard - std::string
in eine NSString
aber ich bin nicht viel Glück.
Kann ich konvertiert von einer NSString
zu einem std::string
mit dem folgenden code
NSString *realm = @"Hollywood";
std::string REALM = [realm cStringUsingEncoding:[NSString defaultCStringEncoding]];
Aber ich bekomme einen compile time error, wenn ich versuche die folgenden
NSString *errorMessage = [NSString stringWithCString:REALM encoding:[NSString defaultCStringEncoding]];
Den Fehler den ich bekomme, ist
Cannot convert 'std::string' to 'const char*' in argument passing
Bin ich hier etwas fehlt?
Vielen Dank im Voraus.
InformationsquelleAutor der Frage Anthony McCormick | 2010-08-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
C-string aus std::string für die Konvertierung:
InformationsquelleAutor der Antwort Vladimir
Erstens, habe Sie mit Objective-C++ für diese Arbeit in die kleinste, einfachste Weg, um sicherzustellen, benennen Sie alle Ihre
*.m
Dateien zu*.mm
Bei weitem die am häufigsten verwendet (nicht unterstützt) manuelle Weg, um eine C++
std::string
in eineNSString
ist mit:Dies funktioniert in den meisten Fällen - und wenn man das nicht tut spezifische encoding-Erkennung und Konvertierung in UTF-8 ist ein gutes Ergebnis für die mit nicht-lateinischen Zeichen 'Arbeit.'
Wenn Sie eine größere app, oder du bist nicht die einzige, die daran arbeiten, aber - Sie werden wahrscheinlich wollen etwas, das leichter anzuwenden.
Angepasst cocoa-dev mailing list archives
Mit, dass in-place - (und entsprechend
#import
ed) Sie können nun:Und das gleiche für
std::wstring
das ist mehr als praktisch.InformationsquelleAutor der Antwort rvalue
InformationsquelleAutor der Antwort John Bowers
Apple hat nun einen neuen Weg, Sie wollen, dass Sie diese Umwandlung zu tun. In XCode7, ich benutzte die Edit - > Umwandeln > Zu Modern Objective-C Syntax... option, um dies herauszufinden. Es verwendet ein Kürzel @ - symbol.
InformationsquelleAutor der Antwort Volomike
Ich habe auch festgestellt, dass:
Funktioniert wie ein champ.
InformationsquelleAutor der Antwort BadPirate
Hier ist das code-snippet/Beispiel:
InformationsquelleAutor der Antwort Deepak Kumar