目标c -如何转换NSString到c字符串



我知道这个问题可能是重复的,但是即使在看了一些谷歌教程和问题之后,甚至在这个论坛上,他们都没有给我一个关于这个主题的体面的答案。

:

NSString *str = @"text";

我想这样做:

char cstring [512] = str;

(这只显示了我想要做的,在看了苹果的NSString类Ref之后,我甚至没有想过要使用它)。

到目前为止,我有:

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

仍然,我得到错误。

解决方案吗?

try const char *command = [str UTF8String];

c字符串作为指针返回,而不是作为字符数组返回。要使用它,可以将变量更改为指针。

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

因为你想要UTF8编码,你可以使用UTF8String方便的方法。

const char *command = [theString UTF8String];

如果您需要将数据存储在字符数组中,您可以使用getCString:maxLength:encoding:方法,传递数组作为缓冲区。这将允许您直接将字符串存储到缓冲区中,并且会告诉您缓冲区是否太小。

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

最新更新