我有一个 NSString
对象并想将其转换为 std::string
。
如何在 Objective-C++ 中做到这一点?
最佳答案
NSString *foo = @"Foo";
std::string bar = std::string([foo UTF8String]);
编辑:几年后,让我扩展这个答案。正如正确指出的那样,如果您最终要使用 std::string
,您很可能希望将 cStringUsingEncoding:
与 NSASCIIStringEncoding
一起使用.您可以将 UTF-8 与普通的 std::strings
一起使用,但请记住,它们对字节而不是字符甚至字素进行操作。要获得良好的“入门”,请查看 question and its answer .
另外请注意,如果您有一个不能表示为 ASCII 的字符串,但您仍然希望它在 std::string
中,并且您不希望其中包含非 ASCII 字符,您可以使用 dataUsingEncoding:allowLossyConversion:
来获取具有有损编码 ASCII 内容的字符串的 NSData
表示,然后将其扔到您的 std::string
关于objective-c - 如何将 NSString 转换为 std::string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8001677/