【问题标题】:How would I point a char to the memory address of a character in a NSString?如何将 char 指向 NSString 中字符的内存地址?
【发布时间】:2012-01-15 13:38:23
【问题描述】:

我有一个 NSString *string = "HELLO"。我如何在字母 E 的内存中获取地址并将一个字符指向它。

【问题讨论】:

    标签: iphone memory nsstring char memory-address


    【解决方案1】:

    可以使用 UTF8String、cStringUsingEncoding: 或 getCString:maxLength:encoding: 从 NSString 获取“C 字符串”,但返回的字符串有自己的(短)寿命,并且是不绑定到 NSString 中的字符缓冲区。

    当然,“将字符指向它”这句话毫无意义。

    【讨论】:

      【解决方案2】:

      NSStrings 不是这样工作的;它们是对象,并且表现得如此。我不知道您是否可以直接从他们那里获得地址,但这不是一个好主意。可以使用 C 风格的字符串吗?

      char *string = "HELLO";
      char *letterE = string + 1;
      

      如果没有,你可以convert between the two

      char *cString = [string UTF8String]; // Or any encoding
      

      附:我相信您的意思是(或应该使用)@"HELLO" 在您的示例中; "HELLO" 是 C 风格的字符串。

      【讨论】:

      • letterE 在内存中有自己的值 (E) 还是指向 HELLO 在内存中的位置的 E
      【解决方案3】:

      你不能。 NSString 对象的内存是只读且不透明的;在这种情况下,内部指针是没有意义的。你想要完成什么?可能还有其他方法可以做到这一点(例如使用NSMutableString,或unicharchar 值的数组。)

      【讨论】:

        猜你喜欢
        • 2021-03-30
        • 2020-07-31
        • 2019-04-07
        • 1970-01-01
        • 1970-01-01
        • 2013-08-12
        • 1970-01-01
        • 1970-01-01
        • 2020-12-08
        相关资源
        最近更新 更多