Как бы я указал символ на адрес памяти символа в строке NSString? - PullRequest
0 голосов
/ 08 декабря 2011

У меня есть NSString * string = "HELLO".Как бы мне получить адрес в памяти буквы E и указать на него символ.

Ответы [ 3 ]

2 голосов
/ 08 декабря 2011

Это не так, как NSString с; они объекты, и ведут себя как таковые. Я не знаю, можете ли вы получить адреса непосредственно от них, но это было бы плохой идеей. Можете ли вы использовать строку в стиле C?

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

Если нет, вы можете конвертировать между двумя :

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

P.S. Я полагаю, что вы имеете в виду (или должны использовать) @"HELLO" в вашем примере; "HELLO" - это строка в стиле C.

0 голосов
/ 08 декабря 2011

Вы можете использовать UTF8String, cStringUsingEncoding: или getCString: maxLength: encoding: для получения "строки C" из NSString, но возвращенная строка имеет собственный (короткий) срок жизни и не привязан к символьному буферу в строке NSString.

И, конечно же, фраза «указать ему символ» не имеет смысла.

0 голосов
/ 08 декабря 2011

Вы не можете. Память объекта NSString доступна только для чтения и непрозрачна; внутренние указатели не имеют смысла в этом контексте. Чего вы пытаетесь достичь? Может быть другой способ сделать это (например, использовать NSMutableString или массив значений unichar или char.)

...