非const字符串的UTF8String

时间:2013-05-28 00:20:45

标签: objective-c nsstring arrays

我找到了一种将字符串设置为char数组的方法。我使用以下代码:

NSString *string = [[NSString alloc] initWithFormat:@"This is a string!"];
char *c = [string UTF8String];

但是,我收到警告,“使用表达式'const char '初始化'char '会丢弃限定符。

它工作正常,但我觉得有更好的方法,而且我宁愿没有大量的警告。有没有人有任何建议?

3 个答案:

答案 0 :(得分:3)

[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);

答案 1 :(得分:0)

使用const char,您也可以使用不同类型的编码:

const char * c = [string cStringUsingEncoding:NSUTF8StringEncoding];

答案 2 :(得分:0)

NSFileManager * fileMgr = [NSFileManager defaultManager];

if (![fileMgr fileExistsAtPath:pathOfDB]) {

    const char *pathDB = [pathOfDB UTF8String];