Ответ 1
Вы можете использовать UTF8String
. Например: [myString UTF8String]
.
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];
}
}
Нужно ли нам беспокоиться о нулевом завершении? Есть ли у нас какой-либо другой способ добиться того же?
Вы можете использовать UTF8String
. Например: [myString UTF8String]
.
Нет, это не правильный путь на нескольких уровнях. NSString поддерживает unicode, что намного превышает количество возможных символов, которые будут помещаться в массив байтов.
Вам нужно использовать такую кодировку, как UTF8, если вы хотите конвертировать unicode в 8-битные символы.
Посмотрите на метод getCString: maxLength: encoding:, и попробуйте использовать NSUTF8StringEncoding.
Этот метод должен делать то, что вы хотите сделать с помощью одного вызова.
Использование
NSString *str = @"Hello There";
const char *c = [str cStringUsingEncoding:NSUTF8StringEncoding];