Как преобразовать NSString в строку C? - PullRequest
38 голосов
/ 14 июля 2011

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

У меня есть:

NSString *str = @"text";

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

char cstring [512] = str;

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

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

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

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

Есть решение?

Ответы [ 2 ]

126 голосов
/ 14 июля 2011

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

30 голосов
/ 14 июля 2011

Строка 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");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...