Приведение или преобразование символа в строку NSSt в Objective-C - PullRequest
26 голосов
/ 27 февраля 2011

Как мне преобразовать символ в строку NSSt в Objective-C?

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

Ответы [ 2 ]

37 голосов
/ 27 февраля 2011

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

char c = 'a';
NSString *s = [NSString stringWithFormat:@"%c", c];
7 голосов
/ 27 февраля 2011

Вы можете сделать 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].

...