Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSMutableString到char*_Objective C_Nsstring_Cstring - Fatal编程技术网

Objective c NSMutableString到char*

Objective c NSMutableString到char*,objective-c,nsstring,cstring,Objective C,Nsstring,Cstring,我可以将NSMutableString转换为char* e、 g 使用-UTF8String方法: NSString* someval = @"This is a test."; NSMutableString *temp = [NSMutableString stringWithString:someval]; const char * temp2 = [temp UTF8String]; 使用-UTF8String方法: NSString* someval = @"This is a te

我可以将NSMutableString转换为char*

e、 g


使用
-UTF8String
方法:

NSString* someval = @"This is a test.";
NSMutableString *temp = [NSMutableString stringWithString:someval];
const char * temp2 = [temp UTF8String];

使用
-UTF8String
方法:

NSString* someval = @"This is a test.";
NSMutableString *temp = [NSMutableString stringWithString:someval];
const char * temp2 = [temp UTF8String];

我应该担心它会丢弃限定符的警告吗?就像Apple文档中的一个额外内容(关于cstring的内存管理):返回的C字符串会自动释放,就像释放返回的对象一样;如果需要将C字符串存储在创建C字符串的自动释放上下文之外,您应该复制它。@CatManDo如果您使用我的代码,它不应该给您这个。这可能是因为在您的代码中,
temp2
的数据类型是
char*
,而不是
const char*
。我应该担心它丢弃限定符的警告吗?就像一个额外的警告一样(关于cstring的内存管理)从Apple文档中:返回的C字符串被自动释放,就像返回的对象被释放一样;如果需要将C字符串存储在创建C字符串的自动释放上下文之外,您应该复制它。@CatManDo如果您使用我的代码,它不应该给您这个。这可能是因为在您的代码中,
temp2
的数据类型是
char*
而不是
const char*
。字符串是如何可变的?您是否希望能够通过操作在
temp2
中获得的字节来更改
NSMutableString
实例?我需要复制第一个字符串,因为稍后我将只对副本进行更改。但是您打算通过
temp2
temp
进行这些更改吗?或者,换一种说法,你不能将
someval
转换为
char*
而不是将
temp
转换为
char*
?我将使用strtok拆分temp2,但我想确保someval永远不会被修改。1)
strtok()
不会更改解析的字符串;2) 当您获得
NSString
char*
表示时,更改它不会更改原始字符串;3) 看看
-[NSString componentsSeparatedByString://code>-您甚至可能不需要使用
strok()
。字符串是如何可变的?您是否希望能够通过操作在
temp2
中获得的字节来更改
NSMutableString
实例?我需要复制第一个字符串,因为稍后我将只对副本进行更改。但是您打算通过
temp2
temp
进行这些更改吗?或者,换一种说法,你不能将
someval
转换为
char*
而不是将
temp
转换为
char*
?我将使用strtok拆分temp2,但我想确保someval永远不会被修改。1)
strtok()
不会更改解析的字符串;2) 当您获得
NSString
char*
表示时,更改它不会更改原始字符串;3) 看看
-[NSString组件由字符串分隔:
——您甚至可能不需要使用
strok()