Подтвердить что ты не робот

Как преобразовать NSString в строку C?

Я знаю, что этот вопрос является возможным дубликатом, но даже после изучения некоторых учебников и вопросов Google даже на этом форуме никто из них не дает мне достойного ответа по этому вопросу.

У меня есть:

NSString *str = @"text";

И я хотел бы сделать что-то вроде:

char cstring [512] = str;

(это только показывает, что я хочу сделать, посмотрев на Apple NSString Class Ref, я даже не думал об использовании этого).

До сих пор у меня:

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

Тем не менее, я получаю ошибки.

Любое решение?

4b9b3361

Ответ 1

попробуйте const char *command = [str UTF8String];

Ответ 2

Строка 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");
}