2009-11-26 63 views

回答

0

你可以嘗試使用

- (const char *)cStringUsingEncoding:(NSStringEncoding)encoding 
+0

謝謝你快速回復..我正在嘗試這個代碼.... FileString = [[NSString alloc] initWithContentsOfFile:defaultPath]; unsigned char * finalstring = [FileString UTF8Char];但它沒有編譯.. – KamalBhr 2009-11-26 11:49:26

4

NSString reference是你的幫助。 NSString有功能將其轉換爲C-字符串:

- (const char *)UTF8String; 
- (const char *)cStringUsingEncoding:(NSStringEncoding)encoding 
- (BOOL)getCString:(char *)buffer maxLength:(NSUInteger)maxBufferCount encoding:(NSStringEncoding)encoding 

而且還有一個similar question

+0

非常感謝您的快速響應,我得到了解決方案.. 關於 kamalBhr – KamalBhr 2009-11-26 11:52:45

19

嗯,這個問題有點不正確,因爲打字不是唯一需要擔心的事情。您不僅需要擔心訪問,還需要擔心編碼。假設你只是想UTF8編碼,比你能逃脫:

NSString *myString = @"Hello"; 
const unsigned char *string = (const unsigned char *) [myString UTF8String]; 

但是,如果你需要訪問每個字符的數據一個字節,可能比你想要的其他編碼的一個,像ASCII:

NSString *myString = @"Hello"; 
const unsigned char *string = (const unsigned char *) [myString cStringUsingEncoding:NSASCIIStringEncoding]; 

,你可能需要使用的其他有價值的編碼是Latin1的,它可以讓你的標準ASCII,與西歐和美國的大多數語言使用重音字符和符號一起:NSISOLatin1StringEncoding

+0

+ 1'NSISOLatin1StringEncoding'。 'NSASCIIStringEncoding'失敗,因爲我的字符串包含無符號值大於128的字形。 – PassKit 2014-08-21 10:11:43

相關問題