提问者:小点点

如何纠正常量char类型中的add variables? [已关闭]


我从一个库中复制了以下函数。

int sqlite3_open(const char *filename, sqlite3 **ppDb));

void sql_stmt(const char* stmt) {
  char *errmsg;
  int   ret;

  ret = sqlite3_exec(db, stmt, 0, 0, &errmsg);

  if(ret != SQLITE_OK) {
    printf("Error in statement: %s [%s].\n", stmt, errmsg);
  }
}

现在我已经尝试向一些数据库查询添加变量,比如这个测试函数:

void test(const char database , const char query){
  sqlite3_open("/sdcard/" + database);
  sql_stmt("CREATE TABLE IF NOT EXISTS" + query +  "(id INTEGER PRIMARY KEY, bar , baz)");
}

如何更正常量字符*文本中的实现变量?

test("test_db.db", "test_table");

上面的功能当然是不工作的,但是我不知道如何解决它正确。。。


共1个答案

匿名用户

在C++中,通过使用std::string而不是const char*,可以非常容易地解决这个问题。

#include <string>

void test(const std::string& database , const std::string& query){
    sqlite3_open(("/sdcard/" + database).c_str());
    sql_stmt(("CREATE TABLE IF NOT EXISTS" + query +  "(id INTEGER PRIMARY KEY, bar , baz)").c_str());
}