【发布时间】:2012-01-15 13:38:23
【问题描述】:
我有一个 NSString *string = "HELLO"。我如何在字母 E 的内存中获取地址并将一个字符指向它。
【问题讨论】:
标签: iphone memory nsstring char memory-address
我有一个 NSString *string = "HELLO"。我如何在字母 E 的内存中获取地址并将一个字符指向它。
【问题讨论】:
标签: iphone memory nsstring char memory-address
您可以使用 UTF8String、cStringUsingEncoding: 或 getCString:maxLength:encoding: 从 NSString 获取“C 字符串”,但返回的字符串有自己的(短)寿命,并且是不绑定到 NSString 中的字符缓冲区。
当然,“将字符指向它”这句话毫无意义。
【讨论】:
NSStrings 不是这样工作的;它们是对象,并且表现得如此。我不知道您是否可以直接从他们那里获得地址,但这不是一个好主意。可以使用 C 风格的字符串吗?
char *string = "HELLO";
char *letterE = string + 1;
如果没有,你可以convert between the two:
char *cString = [string UTF8String]; // Or any encoding
附:我相信您的意思是(或应该使用)@"HELLO" 在您的示例中; "HELLO" 是 C 风格的字符串。
【讨论】:
你不能。 NSString 对象的内存是只读且不透明的;在这种情况下,内部指针是没有意义的。你想要完成什么?可能还有其他方法可以做到这一点(例如使用NSMutableString,或unichar 或char 值的数组。)
【讨论】: