在Objective-C中将char转换或转换为NSString

时间:2011-02-27 17:25:44

标签: objective-c nsstring char

如何在Objective-C中将char转换为NSString?

不是以null结尾的C字符串,只是一个简单的char c = 'a'

2 个答案:

答案 0 :(得分:37)

您可以使用stringWithFormat:,传递%c格式来代表字符,如下所示:

char c = 'a';
NSString *s = [NSString stringWithFormat:@"%c", c];

答案 1 :(得分:7)

你可以用这样的一个字符制作一个C字符串:

char cs[2] = {c, 0}; //c is the character to convert
NSString *s = [[NSString alloc] initWithCString:cs encoding: SomeEncoding];

或者,如果已知该字符是ASCII字符(即拉丁字母,数字或标点符号),则这是另一种方式:

unichar uc = (unichar)c; //Just extend to 16 bits
NSString *s = [NSString stringWithCharacters:&uc length:1];

后一个片段肯定会失败(不会崩溃,但产生错误的字符串)带有国家字符。对于那些,简单扩展到16位不是正确的Unicode转换。这就是需要encoding参数的原因。

另请注意,上面的两个片段会产生一个具有不同释放要求的字符串。后者创建一个自动释放的字符串,前者创建一个需要[release]调用的字符串。