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

Mat*_*toe 39 objective-c

我知道这个问题可能是重复的,但即使在这个论坛上查看一些Google教程和问题之后,也没有一个能给我一个关于这个主题的正确答案.

我有:

NSString *str = @"text";
Run Code Online (Sandbox Code Playgroud)

我想做的事情如下:

char cstring [512] = str;
Run Code Online (Sandbox Code Playgroud)

(这只显示了我想做的事情,看了Apple的NSString Class Ref后我甚至没想过用它).

到目前为止,我有:

char command [512] = [[NSString stringWithFormat:@"text"] cStringUsingEncoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

尽管如此,我还是得到了错误.

有解决方案吗

Jes*_*mos 125

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


ugh*_*fhw 31

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

const char *command = [theString cStringUsingEncoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)

由于您需要UTF8编码,因此可以使用UTF8String便捷方法.

const char *command = [theString UTF8String];
Run Code Online (Sandbox Code Playgroud)

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

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