2009-11-26 95 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

相关问题