Конвертировать строку const char * в строку NSString с длиной и кодировкой - PullRequest
15 голосов
/ 23 января 2010

Интересно, какой метод будет лучше конвертировать строку const char * в NSString.
Я обнаружил, что есть некоторые факты.

  • [NSString stringWithCString: length:] является устаревшим.
  • [NSString stringWithCString: encoding] может использоваться для моей цели

Но я хочу преобразовать с длиной и кодированием (потому что я хочу сделать это хорошо, если у меня есть какой-нибудь не-ASCII символ, установив кодировку в UTF-8). Есть мысли?

Я просто думаю сейчас

  1. создайте другой символ и скопируйте его с помощью std :: strncpy (ch1, ch2, len)
  2. использовать [NSString stringWithCString: кодировка:]

Но это не очень хорошо работает.

Ответы [ 2 ]

39 голосов
/ 23 января 2010

Если ваша переменная const char * имеет имя foo (и она указывает на строку с нулем в конце), просто скажите

[NSString stringWithUTF8String:foo]

Поскольку UTF-8 является расширенным набором ASCII, это будет работать независимо от того, указывает foo на UTF-8 или ASCII. Тогда вы можете перейти на полный Unicode без проблем.

16 голосов
/ 23 января 2010

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

[NSString initWithBytes:length:encoding].
...