我有一个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:来获得字符串的NSData表示,其中包含有损编码的ASCII内容,然后将其扔到std::string

Objective-c相关问答推荐

UICollectionView:一行或一列

如何获取 NSDictionary 中的第一个元素?

如何更改 UIButton 的突出显示 colored颜色 ?

从 C# 到 Objective C 会有多大的飞跃

将未知数量的行添加到静态单元UITableView

从 float 或 double 实例化 NSDecimalNumber 的正确方法

禁用手势识别器

如何在运行时向对象添加属性?

在@implementation 而不是@interface 定义的类变量?

如何创建 NSIndexPath:indexPathWithIndexes:length 所需的索引:

如何知道 NSAssert 在发布版本中是否被禁用?

Objective C const NSString * vs NSString * const

Container View 好像有 UINavigationBar 一样被下推?

UITabBar 未在 ios 7 中显示所选项目图像

具有高质量代码的开源 Objective-C 项目?

UIBezierPath 减go 路径

检测 iOS 应用程序是否在调试器中运行

可以在 NSLocalizedString 中使用变量和/或参数吗?

如何从 UIColor 对象中获取红绿蓝 (RGB) 和 alpha?

使用 cocoaLumberjack 将日志(log)文件存储在哪里