SQLite chaîne d'échappement c++

Considérons le code suivant

char bar[] = "hello world \"One\", two, 'three'";
char *zSQL = sqlite3_mprintf("INSERT INTO stuff (`foo`) VALUES ('%q');", bar ) ; 
sqlite3_exec(db, zSQL, 0, 0, 0);
sqlite3_free(zSQL);
/* Produces a exception error */

Le problème est que les guillemets ne sont pas arriver a échappé dans l'instruction SQL. Si j'étais à la programmation en PHP, je voudrais utiliser une fonction comme fonction sqlite_escape_string pour échapper à la les chaînes avant de les insérer dans la requête SQL mais je n'arrive pas à trouver l'équivalent de la fonction en C++. J'ai pu construire mon propre fonction sqlite_escape_string comme une fonction, mais je suis sûr qu'il y a déjà écrite/épreuve...

Est-il une fonction sqlite_escape_string() fonction équivalente pour le c++?

  • Selon la documentation, la %q chaîne de format est censé échapper les guillemets. Donc la bonne question à se poser est, pourquoi n'est-il pas de travail? Pouvez-vous poster le résultat de la sqlite3_mprintf appel?
  • vous avez raison, il y avait une erreur de syntaxe.
  • Pourquoi ne pas utiliser std::string bla(szYourstring); bla = bla.remplacer("'", """); char* szCharPointer = bla.c_str();
  • Il y a peut être d'autres caractères que je ne sais pas de qui pourraient causer des problèmes à l'avenir. par exemple échappé caractères, les caractères non imprimables, ect..