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

Преобразование const char * string в NSString с длиной и кодировкой

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

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

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

Теперь я просто думаю

  • создайте другие char и скопируйте с длиной с помощью std:: strncpy (ch1, ch2, len)
  • use [NSString stringWithCString: encoding:]

Но это не работает.

4b9b3361

Ответ 1

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

[NSString stringWithUTF8String:foo]

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

Ответ 2

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

[NSString initWithBytes:length:encoding].