如何将NSData转换为C字符串?

问题描述 投票:3回答:3

如何将[NSString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]结果转换为C字符串?

返回一个NSData对象,其中包含使用给定编码编码的接收器的表示形式。

- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding allowLossyConversion:(BOOL)flag

请注意,dataUsingEncoding:allowLossyConversion:返回的数据不是严格的C字符串,因为它没有NULL终止符。

ios objective-c nsdata
3个回答
5
投票
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];

......具有完全相同的结果。


0
投票

有一种-[NSString cStringUsingEncoding:]方法听起来很有希望。


0
投票

你似乎在问错误的问题。

NSString* myString = @"Whatever";
const char* utf8String = [myString UTF8String];

通过NSData毫无意义。

© www.soinside.com 2019 - 2024. All rights reserved.