Domanda

How can I convert [NSString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES] result to C string?

Returns an NSData object containing a representation of the receiver encoded using a given encoding.

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

Note that the data returned by dataUsingEncoding:allowLossyConversion: is not a strict C-string since it does not have a NULL terminator.

È stato utile?

Soluzione

NSMutableData *data = [[@"foo" dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES] mutableCopy];
char nul = '\0';
[data appendBytes:&nul length:sizeof(nul)];
const char *cString = [data bytes];

Or, simply:

const char *cString = [@"foo" UTF8String];

... with exactly the same result.

Altri suggerimenti

There is an -[NSString cStringUsingEncoding:] method that sounds promising.

It seems that you are asking the wrong question.

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

Quite pointless to go through NSData.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top