【发布时间】:2011-07-05 07:33:09
【问题描述】:
如何在 Objective-C 中将 char 转换为 NSString?
不是以 null 结尾的 C 字符串,只是一个简单的 char c = 'a'。
【问题讨论】:
标签: objective-c nsstring char
如何在 Objective-C 中将 char 转换为 NSString?
不是以 null 结尾的 C 字符串,只是一个简单的 char c = 'a'。
【问题讨论】:
标签: objective-c nsstring char
你可以使用stringWithFormat:,传入%c的格式来表示一个字符,像这样:
char c = 'a';
NSString *s = [NSString stringWithFormat:@"%c", c];
【讨论】:
你可以像这样用一个字符组成一个 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];
后面的 sn-p 肯定会失败(不是崩溃,而是产生错误的字符串),带有国家字符。对于那些,对 16 位的简单扩展并不是到 Unicode 的正确转换。这就是需要encoding 参数的原因。
还请注意,上面的两个 sn-ps 会产生一个具有不同释放要求的字符串。后者生成一个自动释放的字符串,前者生成一个需要 [release] 调用的字符串。
【讨论】: