objective-c - 如何将 NSString 转换为 std::string?

标签 objective-c objective-c++

我有一个 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/

相关文章:

ios - 以编程方式创建 uicollectionview 时使用自定义 init 方法

iphone - 带定时器的 NSOperationQueue

c++ - 也支持 Objective-C 的跨平台 C++ IDE?

c++ - 在 Objective-C 代码中使用带有 C++ 实例变量的 Objective-C++ 类

c++ - 如何防止 Cocoa 框架中的 C++ 名称重整

ios - UITableView 显示从 0 开始的行号

objective-c - 使用协议(protocol)与继承的优点和缺点是什么?

ios - 如果滚动,UICollectionView 应用程序会崩溃

c++ - 如何在 Xcode 中检测带有宏的 C++ 编译器?

c++ - 有没有办法#if Objective-C++?