如何将[NSString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]
结果转换为C字符串?
返回一个NSData对象,其中包含使用给定编码编码的接收器的表示。
- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding allowLossyConversion:(BOOL)flag
请注意dataUsingEncoding返回的数据:allowLossyConversion: 不是严格的C字符串,因为它没有NULL终结符。
答案 0 :(得分:4)
NSMutableData *data = [[@"foo" dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES] mutableCopy];
char nul = '\0';
[data appendBytes:&nul length:sizeof(nul)];
const char *cString = [data bytes];
或者,简单地说:
const char *cString = [@"foo" UTF8String];
......结果完全相同。
答案 1 :(得分:0)
有一种-[NSString cStringUsingEncoding:]
方法听起来很有希望。
答案 2 :(得分:0)
你似乎在问错误的问题。
NSString* myString = @"Whatever";
const char* utf8String = [myString UTF8String];
通过NSData毫无意义。