**已关闭。**此问题为not reproducible or was caused by typos。它目前不接受答案。
这个问题是由打字错误或不能再复制的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式对未来的读者不太可能有帮助。
上个月关门了。
Improve this question
我的程序接受一个字符串作为参数,并尝试使用传递的字符串参数作为表名在SQL数据库中创建表。
我有使用SQL的经验,但在用C++实现它时我还是个新手。
class logger {
public:
string name; //name of application to be logged
logger(string app) {
//open data base and get handle for future queries
name = app;
sqlite3 *db;
char *zErrMsg = 0;
int rc;
char *sql;
rc = sqlite3_open("@name", &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
}
sql = "create table if not exists" + name + "(timestamp varchar(255), message varchar(255));"
rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
} else {
fprintf(stdout, "Table created successfully\n");
}
sqlite3_close(db);
}
};
错误:
logger.cpp:29:52: error: cannot convert ‘std::__cxx11::basic_string<char>’ to ‘char*’ in assignment
29 | sql = "create table if not exists " + name + "(timestamp varchar(255), message varchar(255));"
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| std::__cxx11::basic_string<char>
1条答案
按热度按时间dgsult0t1#
不能像构建C++
std::string
那样构建C字符串。相反,将
sql
设置为std::string
,构建字符串,然后使用其c_str()
方法从其中获取C字符串指针。