Konvertieren NSString std::string
Ich versuchen, geben Sie einen NSString in eine C++ - Funktion, aber ich bekomme nur den ersten Buchstaben. Hier ist der code:
#import <Foundation/Foundation.h>
#import <string>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSString* objcString=@"test";
std::string cppString([objcString cStringUsingEncoding:NSUnicodeStringEncoding]);
NSLog(@"%@, %s",objcString, cppString.c_str()
);
}
return 0;
}
Gibt es mir:
2013-03-05 10:22:15.362 TEST[1136:353] test, t
Danke für deine Zeit, haben ein guter Tag.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Codierung falsch ist.
NSUnicodeStringEncoding
gibt einen UTF-16 string. Die Zeichen "t, e, s, t" passen in ein byte - also in UTF-16, Sie sind vertreten durch ein nicht-null-byte und ein null-byte. Die null sagtNSLog()
dass es das Ende der Zeichenfolge. VerwendenNSUTF8StringEncoding
statt.Wie etwa:
Ich glaube, diese Antwort könnte dir helfen: Wie konvertiere ich einen NSString in einen std::string?
Integrität:
Ich Tue es überall in meinem code mit
NSUTF8Encoding
statt, dieNSUnicodeEncoding
.