如何在Objective-C中将char转换为NSString?
不是以null结尾的C字符串,只是一个简单的char c = 'a'
。
答案 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]调用的字符串。