Wie konvertiere ich einen NSString in einen std :: string?
Ich habe eine NSString
Objekt und wollen es zu konvertieren in ein std::string
.
Wie mache ich das in Objective-C++?
Kommentar zu dem Problem
@rvalue nicht ein Duplikat ist-genau das entgegengesetzte Konvertierung.
InformationsquelleAutor der Frage gabor | 2011-11-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Edit: Nach ein paar Jahren, lass es mich erweitern auf diese Antwort. Wie Recht darauf hingewiesen, werden Sie wahrscheinlich wollen, zu verwenden
cStringUsingEncoding:
mitNSASCIIStringEncoding
wenn Sie gehen, um am Ende mitstd::string
. Sie können die Verwendung von UTF-8 mit normalenstd::strings
, aber Bedenken Sie, dass diejenigen, die arbeiten auf Byte und nicht auf Zeichen oder auch Grapheme. Für eine gute "erste Schritte", check out this Frage und Ihre Antwort.Beachten Sie auch, wenn du einen string hast, können nicht dargestellt werden als ASCII, aber Sie wollen immer noch, es in ein
std::string
und Sie nicht möchten, dass nicht-ASCII-Zeichen gibt, können SiedataUsingEncoding:allowLossyConversion:
um eineNSData
Darstellung der string mit lossy encoded ASCII content, und dann werfen Sie, dass bei Ihremstd::string
InformationsquelleAutor der Antwort JustSid
Als Ynau ist vorgeschlagen, im Kommentar, im Allgemeinen Fall wäre es besser, um alles auf den Stapel anstelle der heap (mit
new
erstellt den string auf dem heap), somit (vorausgesetzt, UTF8-Codierung):InformationsquelleAutor der Antwort Marco83
Wie bereits auf philjordan.eu es könnte auch sein, dass die NSString ist null. In einem solchen Fall der Besetzung getan werden sollte, wie diese:
Dies würde dazu führen Sie zu einer solchen Umwandlung:
InformationsquelleAutor der Antwort Bruno Bieri