【问题标题】:NSString get -charactersNSString 获取 -characters
【发布时间】:2011-04-22 15:51:46
【问题描述】:

我想得到一个 NSString 的字符。像这样:

NSString *data;
const char * typein = [[data characters] UTF8String];

但显然 NSString 不会响应 -characters。如何获取 NSString 的字符?

谢谢, 以利亚

【问题讨论】:

    标签: objective-c nsstring


    【解决方案1】:

    你可以使用这个功能:

    for(int i =0 ;i<[myString length]; i++) {
      char character = [myString characterAtIndex:i];
    }
    

    NSString *str = @"astring";
    const char *cString = [str UTF8String];
    

    【讨论】:

    • -[NSString cString] 已被弃用多年;你应该使用-[NSString UTF8String]-[NSString cStringUsingEncoding:]
    • 我不知道谢谢 - 我要修改我的答案
    • 已更正,这是更好的答案,尽管它没有解释原因。虽然 -UTF8String 用于获取缓冲区,但如果您想要完全组合的 unicode 字符(其中一些可能是多个字节),则需要使用 characterAtIndex:
    • @mklfarha 这个doc 实际上建议不要使用 characterAtIndex 来循环遍历 NSString。不知道有没有更好的办法。
    【解决方案2】:

    如果您只想从 NSString 中获取 cString,只需调用 UTF8String,就像您已经在做的那样,然后迭代数组。

    【讨论】:

    • 请注意,这将获取对包含原始字符串的缓冲区的引用。只要它是 ASCII,它就是每个字符一个字节。如果它是 unicode,它很可能会包含跨越多个字节的字符。
    猜你喜欢
    • 2011-10-21
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 2023-03-10
    • 1970-01-01
    • 2011-04-19
    相关资源
    最近更新 更多