我找到了一種將字符串設置爲char數組的方法。我使用下面的代碼:非const字符串的UTF8String
NSString *string = [[NSString alloc] initWithFormat:@"This is a string!"];
char *c = [string UTF8String];
不過,我得到了警告,「初始化‘字符’與爲一個函數型‘爲const char’丟棄預選賽
它工作正常,但我的感覺。有沒有人有任何建議?
我找到了一種將字符串設置爲char數組的方法。我使用下面的代碼:非const字符串的UTF8String
NSString *string = [[NSString alloc] initWithFormat:@"This is a string!"];
char *c = [string UTF8String];
不過,我得到了警告,「初始化‘字符’與爲一個函數型‘爲const 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,請給出關於爲什麼這個答案有用的更多細節。你可以參考:http://stackoverflow.com/help/how-to-answer – echonax
可能重複的[初始化炭\ *與類型爲const char的表達式](http://stackoverflow.com/questions/9976810/initializing-char-with-an-expression-of-type-const -char)。換句話說:當你像這樣去除const限定符時,編譯器不喜歡它 – CodaFi