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 非常量字符串的UTF8String_Objective C_Nsstring_Arrays - Fatal编程技术网

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,请提供更多关于此答案有用原因的详细信息。您可以参考: