我被问到如何在不分配内存的情况下反转字符串的问题。任何人?
答案 0 :(得分:4)
无论是否分配内存,都无法撤消NSString
,因为NSString
是不可变的。
在不分配内存的情况下,您无法撤消NSMutableString
,因为NSMutableString
提供的替换其内容的唯一方法需要在NSString
中指定新字符,必须分配。
CFMutableString
有同样的“问题”。
答案 1 :(得分:1)
void reverseStringBetter(char* str)
{
int i, j;
i=j=0;
j=strlen(str)1;
for (i=0; i<j; i++, j-)
{
str[i] ^= str[j] ;
str[j] ^= str[i] ;
str[i] ^= str[j] ;
}
}
答案 2 :(得分:0)
NSString
是不可能的,因为它们是不可变的,唯一的方法是创建一个新的字符串。
虽然这可能不是您要查找的内容,但您可以将NSString
转换为普通的c字符串,然后进行就地编辑。你仍然在分配内存,但是你至少可以通过修改字符串来获得所需内容的一半。
我不确定您的用例是什么,因为不想分配内存,或者这只是一个假设。