Domanda

Comprendo la differenza tra i tipi unsigned char * e char * . Comprendo anche come utilizzare reinterpret_cast per trasmettere un carattere senza segno * in un carattere * in C ++.

Sto usando sqlite3 in Objective-C e sto cercando di ottenere un NSString da una chiamata a

sqlite3_column_text(...);

Per fare questo, sostanzialmente sto facendo:

char *cParam = (char *)sqlite3_column_text(compiledStatementPtr, 0);
NSString *aParam = nil;
if (cParam) {
    aParam = [NSString stringWithUTF8String:cParam];
}

sqlite3_column_text () , tuttavia, restituisce un carattere non firmato * e sono preoccupato per il comportamento del cast su char * . Ho letto che il cast è specifico per l'implementazione e mi chiedevo se si tratta di un cast sicuro in Objective-C o se abbaio totalmente l'albero sbagliato?

È stato utile?

Soluzione

Non hai molto di cui preoccuparti a causa del cast. In realtà, il codice di esempio di Apple utilizza lo stesso modello di codice che stai utilizzando:

self.title =
  [NSString stringWithUTF8String:(char *)sqlite3_column_text(init_statement, 0)];

(Da Elenco libri SQLite Book.m ).

Penso che dovresti essere più interessato al database che in realtà ha stringhe UTF-8 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top