我找到了一种将字符串设置为 char 数组的方法。我使用以下代码:
NSString *string = [[NSString alloc] initWithFormat:@"This is a string!"];
char *c = [string UTF8String];
但是,我收到警告,“使用'const char' 表达式类型初始化 'char ' 会丢弃限定符。
它工作正常,但我觉得有更好的方法来做到这一点,我宁愿没有大量的警告。有没有人有什么建议?
我找到了一种将字符串设置为 char 数组的方法。我使用以下代码:
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 = [字符串 cStringUsingEncoding:NSUTF8StringEncoding];
NSFileManager *fileMgr = [NSFileManager defaultManager];
if (![fileMgr fileExistsAtPath:pathOfDB]) {
const char *pathDB = [pathOfDB UTF8String];