Objective c 非常量字符串的UTF8String
我找到了一种将字符串设置为字符数组的方法。我使用以下代码:Objective c 非常量字符串的UTF8String,objective-c,nsstring,arrays,Objective C,Nsstring,Arrays,我找到了一种将字符串设置为字符数组的方法。我使用以下代码: NSString *string = [[NSString alloc] initWithFormat:@"This is a string!"]; char *c = [string UTF8String]; 但是,我得到警告,“使用'const char'的表达式类型初始化'char'将丢弃限定符 它工作得很好,但我觉得有更好的方法,我不希望有太多的警告。有人有什么建议吗?由[NSString UTF8String]返回的值是指向
NSString *string = [[NSString alloc] initWithFormat:@"This is a string!"];
char *c = [string UTF8String];
但是,我得到警告,“使用'const char'的表达式类型初始化'char'将丢弃限定符
它工作得很好,但我觉得有更好的方法,我不希望有太多的警告。有人有什么建议吗?由
[NSString UTF8String]
返回的值是指向常量字符数组的指针。不能直接删除“const”
如果需要非常量字符数组,则必须使用方法strcpy(…)
复制字符串。必须声明并初始化字符数组,然后将给定字符串的值复制到:
NSString *string = @"This is a string";
char cString [string.length]
strcpy(cString, string.UTF8String);
NSLog(@"Copied String: %s", cString);
或者,如果您希望自己管理内存:
NSString *string = @"This is a string";
char * cString = malloc(sizeof(char)*string.length);
strcpy(cString, string.UTF8String);
NSLog(@"Copied String: %s", cString);
free(cString);
使用const char,还可以使用不同类型的编码:
const char*c=[string cStringUsingEncoding:NSUTF8StringEncoding];NSFileManager*fileMgr=[NSFileManager defaultManager]
if (![fileMgr fileExistsAtPath:pathOfDB]) {
const char *pathDB = [pathOfDB UTF8String];
可能重复。换句话说:编译器不喜欢这样切掉常量限定符欢迎来到StackOverflow,请提供更多关于此答案有用原因的详细信息。您可以参考: