开发者

How to convert NSString to C string?

I know that this question is a possible duplicate, but even after looking at some Google tutorials and questions even on this forum none of them gives me a decent answer about this subject.

I have:

NSString *str = @"text";

And I would li开发者_Python百科ke to do something like:

char cstring [512] = str;

(this only shows what I want to do, after looking at Apple's NSString Class Ref I didn't even think about using it).

Up to now I have:

char command [512] = [[NSString stringWithFormat:@"text"] cStringUsingEncoding:NSUTF8StringEncoding];

Still, with that I get errors.

Any solution?


try const char *command = [str UTF8String];


A c string is returned as a pointer, not as an array of characters. To use it, you can change your variable to a pointer.

const char *command = [theString cStringUsingEncoding:NSUTF8StringEncoding];

Since you want the UTF8 encoding, you can use the UTF8String convenience method.

const char *command = [theString UTF8String];

If you need the data to be stored in a character array, you can use the getCString:maxLength:encoding: method, passing the array as the buffer. This will allow you to store the string directly to the buffer, and will tell you if the buffer is too small.

char command[512];
if(![theString getCString:command maxLength:sizeof(command)/sizeof(*command) encoding:NSUTF8StringEncoding]) {
    NSLog(@"Command buffer too small");
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜