2013-10-28 202 views
0

我需要將C字符串轉換爲NSString。
我該怎麼做?
我知道如何將它轉換的其他方式,如何將Objective-C字符串轉換爲C字符串?

NSString *hello = @"Hello!"; 
const char *buffer; 
buffer = [schoolName cStringUsingEncoding: NSUTF8StringEncoding]; 
NSLog(@"C-String is: %s", buffer); 

但是,我做的Objective-C字符串(的NSString)爲以空值終止字符串怎麼做。

謝謝!

回答

7

const char *buffer = [hello UTF8String];會做你想要的。

現在來回答新的(和非常不同的)問題:

如果你有,例如,const char *cstring = "hello world";你可以通過創建一個與它的NSString *NSString *nsstring = [NSString stringWithFormat:@"%s", cstring];

有,當然,其他方式完成同樣的事情。

+0

不這樣做同樣的事情爲'緩衝= [schoolName cStringUsingEncoding: NSUTF8StringEncoding]'? –

+0

我從來沒有使用'cStringUsingEncoding',但我經常使用'UTF8String',我從來沒有見過它不是NULL終止。 – mah

+0

對不起,您的答案**不是錯誤的**,但我擔心我寫錯了我的問題!我需要做相反的事情,IE,我需要把我的Objective-C對象變成C語言。我對這個錯誤感到非常抱歉。 –

1

嘗試這樣:

- (wchar_t*)getWideString 
{ 
    const char* temp = [schoolName cStringUsingEncoding:NSUTF8StringEncoding]; 
    int buflen = strlen(temp)+1; //including NULL terminating char 
    wchar_t* buffer = malloc(buflen * sizeof(wchar_t)); 
    mbstowcs(buffer, temp, buflen); 
    return buffer; 
}; 
+0

我很欣賞答案,但如上所列,有一個稍微簡單的方法來做到這一點。對有效的答案進行投票,並且不怕使用大量的編碼 –

3
NSString* str = [NSString stringWithUTF8String:(const char *)] 

NSString* str = [NSString stringWithCString:(const char *) encoding:(NSStringEncoding)] 

NSString* str = [NSString stringWithCharacters:(const unichar *) length:(NSUInteger)] 
相關問題