如何将[NSString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]
结果转换为C字符串?
返回一个NSData对象,其中包含使用给定编码编码的接收器的表示形式。
- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding allowLossyConversion:(BOOL)flag
请注意,dataUsingEncoding:allowLossyConversion:返回的数据不是严格的C字符串,因为它没有NULL终止符。
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];
......具有完全相同的结果。
有一种-[NSString cStringUsingEncoding:]
方法听起来很有希望。
你似乎在问错误的问题。
NSString* myString = @"Whatever";
const char* utf8String = [myString UTF8String];
通过NSData毫无意义。