2016-09-20 2 views
0

У меня есть библиотека C с следующей структуройSwift строки в массив символов наследия C

typedef struct Client_ 
{ 
    /*! Display Name for Guest only */ 
    char displayName[USERID_SIZE]; 
    /*! Conference PIN if needed */ 
    char pin[PIN_SIZE]; 
} Client; 

От быстры, я должен назначить член шпагата.

var client = Client(); 
let guestVName = "Swift user"; 
let guestVRoomPin = ""; 

Как это сделать? Пожалуйста помоги.

+1

Что-то вроде этого HTTP://stackoverflow.com/questions/27461904/convert-an-string-to-an-array-of-int8? (Возможно, для обновления Swift 2 или Swift требуется обновление). –

ответ

1

Вам может понадобиться, чтобы написать что-то вроде этого:

strlcpy(&client.displayName.0, guestVName, Int(USERID_SIZE)) 
strlcpy(&client.pin.0, guestVRoomPin, Int(PIN_SIZE)) 

В языке Си, массивы передается указатель на первый элемент, и Свифт, фиксированные размерами C-массивы импортируются как кортежи. Итак, вам нужно подражать тому, что делает C-компилятор. В приведенном выше коде вы можете передать указатель на первый элемент кортежа.

(Помните, strlcpy не Стандартная функция C-библиотека И это отсекает превышена часть строки, которая может генерировать недопустимую последовательность байтов, как UTF-8.).

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