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

Кастинг или преобразование char в NSString в Objective-C

Как преобразовать char в NSString в Objective-C?

Не строка с нулевым завершением, просто char c = 'a'.

4b9b3361

Ответ 1

Вы можете использовать stringWithFormat:, передавая в формате %c для представления символа, например:

char c = 'a';
NSString *s = [NSString stringWithFormat:@"%c", c];

Ответ 2

Вы можете сделать C-строку из одного символа следующим образом:

char cs[2] = {c, 0}; //c is the character to convert
NSString *s = [[NSString alloc] initWithCString:cs encoding: SomeEncoding];

В качестве альтернативы, если символ известен как символ ASCII (например, латинская буква, номер или знак пунктуации), здесь другой способ:

unichar uc = (unichar)c; //Just extend to 16 bits
NSString *s = [NSString stringWithCharacters:&uc length:1];

Последний фрагмент, безусловно, терпит неудачу (не сбой, а неправильная строка) с национальными символами. Для них простое расширение до 16 бит не является правильным преобразованием в Unicode. Поэтому необходим параметр encoding.

Также обратите внимание, что два вышеописанных фрагмента производят строку с различными требованиями к перераспределению. Последний создает строку с автореализацией, первая - строку, для которой требуется вызов [release].