Question

Je comprends la différence entre les types chars non signés * et char * . Je comprends également comment utiliser reinterpret_cast pour convertir un char non signé * en char * en C ++.

J'utilise sqlite3 dans Objective-C et j'essaie d'obtenir un NSString à partir d'un appel à

sqlite3_column_text(...);

Pour ce faire, je fais essentiellement:

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

sqlite3_column_text () renvoie cependant un char non signé * et je suis inquiet du comportement de la conversion en char * . J'ai lu que le casting est spécifique à l'implémentation et je me demandais s'il s'agissait d'un casting sûr en Objective-C ou si j'aboyais totalement le mauvais arbre?

Était-ce utile?

La solution

Vous n'avez pas à vous inquiéter à cause de la distribution. En fait, l'exemple de code Apple utilise exactement le même modèle de code que vous utilisez:

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

(à partir de liste de livres SQLite classe Book.m ).

Je pense que vous devriez être plus préoccupé par le fait que la base de données comporte réellement des chaînes UTF-8 .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top