Мне удалось найти такие методы, как -[NSString stringWithCString:encoding:]
, но они не кажутся хорошими, когда cstring является указателем.
Как преобразовать cstring в NSString?
Ответ 1
Сначала, не используйте 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 (кодировки находятся в нижней части страницы)
Ответ 2
С современным Objective-C (поскольку Xcode 5 по крайней мере) вы можете просто сделать:
char const* cString = "Hello";
NSString *myNSString = @(cString);
Ответ 3
stringWithCString:encoding:
создает NSString из данной строки C. Чтобы создать строку C из NSString, используйте либо метод UTF8String
(обычно предпочтительный), либо cStringUsingEncoding:
(если вам нужна кодировка, отличная от UTF-8).