Как char преообразовать в unicode сhar в objective-c?

Пользователь

от jerad.kuphal , в категории: Другие , год назад

Как char преообразовать в unicode сhar в objective-c?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от clifford , год назад

@jerad.kuphal 

В Objective-C символьные строки представляются типом данных NSString, а отдельные символы - типом данных unichar. Если у вас есть символ типа char, вы можете преобразовать его в unichar следующим образом:

1
2
char myChar = 'a';
unichar myUnichar = (unichar)myChar;


Здесь мы используем приведение типов для преобразования переменной типа char в тип unichar.


Если у вас есть строка символов типа char, и вы хотите преобразовать ее в строку типа NSString, вы можете воспользоваться методом initWithCString:encoding: класса NSString, который принимает указатель на строку символов и кодировку символов:

1
2
char myString[] = "hello";
NSString *myNSString = [[NSString alloc] initWithCString:myString encoding:NSUTF8StringEncoding];


Здесь мы создаем новый объект типа NSString, используя строку символов "hello" и кодировку UTF-8. Обратите внимание, что этот метод требует, чтобы строка символов имела завершающий нулевой символ. Если ваша строка этого не имеет, вы должны явно добавить его, например, так:

1
2
3
4
5
6
7
char myString[] = "hello";
int length = strlen(myString);
char *myStringWithNull = malloc(length + 1);
strcpy(myStringWithNull, myString);
myStringWithNull[length] = '';
NSString *myNSString = [[NSString alloc] initWithCString:myStringWithNull encoding:NSUTF8StringEncoding];
free(myStringWithNull);


Здесь мы сначала вычисляем длину строки символов, затем выделяем достаточно памяти для строки с нулевым символом, копируем содержимое строки в эту новую строку и явно добавляем нулевой символ. После этого мы можем использовать эту новую строку в методе initWithCString:encoding:. Не забудьте освободить память, когда она больше не нужна!