Преобразование NSString в массив char

const char arr[]="Hello There";

Я пытаюсь создать массив символов, как указано выше.

Ниже приведен код, который я использую. Это правильный способ создания массива char.

-(void) createCharArray:(NSString*) text{
   char arr[text.length];
   for(int i=0;i<text.length;i++){
    arr[i]=[text characterAtIndex:i];
   }
}

Нужно ли нам беспокоиться о нулевом завершении? Есть ли у нас какой-либо другой способ добиться того же?

Ответы

Ответ 1

Вы можете использовать UTF8String. Например: [myString UTF8String].

Ответ 2

Нет, это не правильный путь на нескольких уровнях. NSString поддерживает unicode, что намного превышает количество возможных символов, которые будут помещаться в массив байтов.

Вам нужно использовать такую ​​кодировку, как UTF8, если вы хотите конвертировать unicode в 8-битные символы.

Посмотрите на метод getCString: maxLength: encoding:, и попробуйте использовать NSUTF8StringEncoding.

Этот метод должен делать то, что вы хотите сделать с помощью одного вызова.

Ответ 3

Использование

NSString *str = @"Hello There";
const char *c = [str cStringUsingEncoding:NSUTF8StringEncoding];