【问题标题】:Casting or converting a char to an NSString in Objective-C在 Objective-C 中将 char 转换或转换为 NSString
【发布时间】:2011-07-05 07:33:09
【问题描述】:

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

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

【问题讨论】:

    标签: objective-c nsstring char


    【解决方案1】:

    你可以使用stringWithFormat:,传入%c的格式来表示一个字符,像这样:

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

    【讨论】:

    • 太棒了,谢谢 BoltClock。我是 Objective-C 的新手,目前很多这些东西对我来说有点难以发现。谢谢! :-)
    • @Hovito:如果您使用 Xcode,请记住始终有内置的文档查看器 :)
    • stringWithFormat 太过分了,恕我直言。
    • @Seva:是的,我同意,我猜这是因为包含格式的额外 NSString。我赞成你的回答:)
    【解决方案2】:

    你可以像这样用一个字符组成一个 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] 调用的字符串。

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 2012-10-06
      • 2011-12-04
      • 2011-09-18
      • 2020-10-26
      • 2016-12-17
      • 2010-12-22
      • 1970-01-01
      • 2011-01-24
      相关资源
      最近更新 更多