C ++ concat const char,其值来自#define

时间:2012-08-27 21:11:54

标签: c++ string char

我使用

定义了一个值
#define username "admin"

然后我想将char语句中的用户名用作sql as

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+’

我怎么能克服它?

2 个答案:

答案 0 :(得分:3)

试试这个:

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

在c ++中,数组索引从0开始,所以当你删除了一个长度为1的数组时,它唯一可以有的索引是0.此外,'+'不用于c ++中的连接。

答案 1 :(得分:2)

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

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

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

如果我是你,我会使用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;"