18

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

  • [NSString stringWithCString:length:] 有点过时了。
  • [NSString stringWithCString:encoding] 可以用于我的目的

但我想用长度和编码进行转换(因为如果我有一些非 ASCII 字符,我想通过将编码设置为 UTF-8 来做到这一点)。有什么想法吗?

我现在只想

  1. 使用 std::strncpy(ch1, ch2, len) 创建其他字符并按长度复制
  2. 使用 [NSString stringWithCString:encoding:]

但效果不好。

4

2 回答 2

44

如果您的 const char* 变量被命名foo(并且它指向一个以 null 结尾的字符串),只需说

[NSString stringWithUTF8String:foo]

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

于 2010-01-23T04:32:35.090 回答
16

利用:

[NSString initWithBytes:length:encoding].
于 2010-01-23T02:04:18.427 回答