2009-02-04 3 views
21

Мне удалось найти методы, подобные -[NSString stringWithCString:encoding:], но они, похоже, не играют хорошо, когда cstring является указателем.Как преобразовать cstring в NSString?

+2

Они прекрасно работают с указателями, вам нужно более подробно описать проблемы, с которыми вы сталкиваетесь. – codelogic

+0

Кроме того, * все * C струны указатели. Это определение строки C: указатель на некоторые символы. –

+1

На самом деле, я думаю, вы говорите о преобразовании CString в NSString :) –

ответ

35

Прежде всего, не используйте initWithCString, он устарел.

Пар способов вы можете сделать это:

const *char cString = "Hello"; 
NSString *myNSString = [NSString stringWithUTF8String:cString]; 

Если вам нужны другая кодировка, как ASCII:

const *char cString = "Hello"; 
NSString *myNSString = [NSString stringWithCString:cString encoding:NSASCIIStringEncoding]; 

Если вы хотите, чтобы увидеть все струнные кодировки доступны, в Xcode, удерживайте команда + опция затем дважды щелкните по NSASCIIStringEncoding в приведенном выше блоке кода.

Вы сможете увидеть, где Apple объявила о своем перечислении для типов кодировки строк. Бит быстрее, чем пытаться найти его в документации.

Некоторые другие из них вам может понадобиться:

NSASCIIStringEncoding 
NSUnicodeStringEncoding // same as NSUTF16StringEncoding 
NSUTF32StringEncoding 

заказ от Apple NSString Class Reference (кодироаки в нижней части страницы)

10

stringWithCString:encoding: создает NSString из данной строки C. Чтобы создать строку C из NSString, используйте либо метод UTF8String (обычно предпочитаемый), либо cStringUsingEncoding: (если вам нужна кодировка, отличная от UTF-8).

+0

Поскольку метод cString устарел, этот ответ лучше, чем принятый. –

+0

да, мой плохой, я исправил это сейчас –

15

С современной Objective-C (с Xcode 5, по крайней мере), вы можете просто do:

char const* cString = "Hello"; 
NSString *myNSString = @(cString); 
+0

Thats short and sweet. плюс один для этого :) – Alix

+0

Это правильный ответ. Когда вы выполняете «преобразование в современный объектно-c-синтаксис» в xcode, он преобразуется в этот формат. – izerik

Смежные вопросы