1

我已经使用定义了一个值

#define username "admin"

然后我想在 char 语句中使用用户名到 sql 作为

const char *pSQL[1];
pSQL[1] = "update websrv_config set admin_id='" + username + "'";

但似乎有错误

error: invalid operands of types ‘const char [36]’ and ‘const char [6]’ to binary ‘operator+’

我怎样才能克服它?

4

2 回答 2

3

尝试这个:

pSQL[0] = "update websrv_config set admin_id='"  username  "'";

在 c++ 中,数组索引从 0 开始,因此当您清除长度为 1 的数组时。它可以拥有的唯一索引是 0。此外,“+”不用于 c++ 中的连接。

于 2012-08-27T21:16:51.117 回答
2

这是一个 C 字符串,而不是一个std::string(以及你在 C 中所做的,而不是 C++),但如果你必须这样做,你可以这样做:

pSQL[0] = "update websrv_config set admin_id='"  username  "'";

C 字符串不能连接,+因为它们是字符串文字。

std::string如果我是你,我会使用:

std::string sql = "update websrv_config set admin_id='";
sql += username;
sql += "'";

您可以使用以下const char*格式获取内容(如果需要)

sql.c_str();

另外,请注意,由于username它是一个宏,因此您不能在运行时更改它。

此外,如果您摆脱宏,请考虑一些提供用户名的邪恶策划者,例如:

"johnny'; DROP TABLE websrv_config;"
于 2012-08-27T21:13:03.570 回答