2011-09-28 70 views
0

我必須將NSString轉換爲空字符char []。NSString到char [] Objective-c

的方式Im做是這樣的:

NSString *regC = @"1234"  
char REG[[regC length] +1]; 
BOOL result = [regC getCString:REG maxLength:32 encoding:NSUTF8StringEncoding]; 

,我不知道,如果是正確的做法。

REG必須是一個5個字符陣列,用空的最後一個/

感謝。

回答

1

只要您在NSString中使用ASCII字符,這是正確的轉換方法。它們以UTF-8編碼表示爲單字節字符。 如果你使用一些非ASCII字符,你應該讓你的REG更大。

更新:多一個:你應該把你的實際緩衝區大小放到「maxLength:」參數中以避免緩衝區溢出。不是32,而是[regC長度] +1。

+0

@Eiko它_can_工作,但它並不總是。 – Richard

2
char *REG = [@"test" UTF8String]; 

除非使用malloc/free,否則不能在運行時分配char []的長度。但以上述方式,您不需要管理內存。

+0

他可以在堆疊中完成,就像他所做的那樣。 – Jurlie