Ответ 1
попробуйте const char *command = [str UTF8String];
Я знаю, что этот вопрос является возможным дубликатом, но даже после изучения некоторых учебников и вопросов Google даже на этом форуме никто из них не дает мне достойного ответа по этому вопросу.
У меня есть:
NSString *str = @"text";
И я хотел бы сделать что-то вроде:
char cstring [512] = str;
(это только показывает, что я хочу сделать, посмотрев на Apple NSString Class Ref, я даже не думал об использовании этого).
До сих пор у меня:
char command [512] = [[NSString stringWithFormat:@"text"] cStringUsingEncoding:NSUTF8StringEncoding];
Тем не менее, я получаю ошибки.
Любое решение?
попробуйте 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");
}