2009-02-04 76 views
21

我已經能夠找到像-[NSString stringWithCString:encoding:]這樣的方法,但是當cstring是一個指針時它們看起來不太好。如何將cstring轉換爲NSString?

+2

他們工作完全正確的指針,你需要更多描述你面臨的問題。 – codelogic 2009-02-04 01:20:25

+0

此外,*所有* C字符串都是指針。這是C字符串的定義:指向某些字符的指針。 – 2009-02-04 02:22:32

+1

其實我認爲你正在討論將CString轉換爲NSString :) – 2010-01-08 14:44:33

回答

35

首先,不要使用initWithCString,它已被棄用。

的方法可以做到這對夫妻:如果您需要另一個編碼像ASCII

const *char cString = "Hello"; 
NSString *myNSString = [NSString stringWithUTF8String:cString]; 

:如果你想看到的所有字符串編碼可用,在Xcode

const *char cString = "Hello"; 
NSString *myNSString = [NSString stringWithCString:cString encoding:NSASCIIStringEncoding]; 

,持有命令+選項然後雙擊NSASCIIStringEncoding上面的代碼塊中。

您將能夠看到蘋果在哪裏聲明瞭字符串編碼類型的枚舉。比試圖在文檔中找到它快。

一些其他那些你可能需要:

NSASCIIStringEncoding 
NSUnicodeStringEncoding // same as NSUTF16StringEncoding 
NSUTF32StringEncoding 

結帳蘋果NSString Class Reference(編碼是在頁面的底部)

10

stringWithCString:encoding:根據給定的C字符串創建一個NSString。要從NSString創建C字符串,請使用UTF8String方法(通常爲首選)或cStringUsingEncoding:(如果需要UTF-8以外的編碼)。

15

隨着現代的Objective-C(因爲Xcode的5至少)你可以做:

char const* cString = "Hello"; 
NSString *myNSString = @(cString);