你如何将cstring转换为NSString?

时间:2009-02-04 01:14:48

标签: cocoa

我已经能够找到类似-[NSString stringWithCString:encoding:]的方法,但是当cstring是一个指针时,它们似乎不能很好地发挥作用。

3 个答案:

答案 0 :(得分:36)

首先,不要使用initWithCString,它已被弃用。

你可以通过几种方式做到这一点:

const *char cString = "Hello";
NSString *myNSString = [NSString stringWithUTF8String:cString];

如果您需要其他编码,例如ASCII:

const *char cString = "Hello";
NSString *myNSString = [NSString stringWithCString:cString encoding:NSASCIIStringEncoding];

如果您想查看所有可用的字符串编码,请在Xcode中按住命令+选项,然后在上面的代码块中的NSASCIIStringEncoding双击

您将能够看到Apple在哪里声明了字符串编码类型的枚举。比试图在文档中找到它快一点。

您可能需要的其他一些:

NSASCIIStringEncoding
NSUnicodeStringEncoding // same as NSUTF16StringEncoding
NSUTF32StringEncoding

结帐Apple的NSString Class Reference(编码位于页面底部)

答案 1 :(得分:22)

使用现代Objective-C(至少从Xcode 5开始),您可以这样做:

char const* cString = "Hello";
NSString *myNSString = @(cString);

答案 2 :(得分:10)

stringWithCString:encoding:从给定的C字符串创建NSString。要从NSString创建C字符串,请使用UTF8String方法(通常首选)或cStringUsingEncoding:(如果您需要UTF-8以外的编码)。