如何将NSString转换为Cstring?

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

我有:

NSString *str = @"text"; 

我想要做一些事情:

 char cstring [512] = str; 

(这只是显示了我想要做的,看了苹果的NSString类参考我甚至没有考虑使用它)。

到现在我有:

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

尽pipe如此,我得到的错误。

任何解决scheme

尝试const char *command = [str UTF8String];

cstring作为指针返回,而不是字符数组。 要使用它,你可以改变你的variables为一个指针。

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

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

 const char *command = [theString UTF8String]; 

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

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