使用长度AND编码将const char * string转换为NSString

时间:2010-01-23 02:02:30

标签: c++ cocoa encoding objective-c++

我想知道哪种方法更好地将const char * string转换为NSString 我发现有一些事实。

  • [NSString stringWithCString:length:]有点不推荐使用。
  • [NSString stringWithCString:encoding]可能用于我的目的

但是我希望使用长度和编码进行转换(因为如果我通过将编码设置为UTF-8而有一些非ASCII字符,我想要那么好)。有什么想法吗?

我现在想想

  1. 使用std :: strncpy(ch1,ch2,len)创建其他字符和副本长度
  2. 使用[NSString stringWithCString:encoding:]
  3. 但它效果不好。

2 个答案:

答案 0 :(得分:38)

如果你的const char *变量名为foo(并且它指向以null结尾的字符串),那么就说

[NSString stringWithUTF8String:foo]

因为UTF-8是ASCII的超集,所以无论foo指向UTF-8还是ASCII,这都有效。然后你可以毫无问题地升级到完整的Unicode。

答案 1 :(得分:16)

使用:

[NSString initWithBytes:length:encoding].