将文字添加到char *

时间:2010-11-18 14:11:58

标签: c++ sql pointers string-concatenation

是否可以向char*添加文字?

因为此代码会出错:

name3 = "SELECT account_id FROM players WHERE name = '" + name + "'";

(name3 = char *)

3 个答案:

答案 0 :(得分:16)

您的问题标有 C ++ ,因此请使用C ++。摆脱你的char*并使用std::string

std::string name = "...";

std::string name3 = "SELECT account_id FROM players WHERE name = '" + name + "'";

您可以通过分配足够大的新数组来“添加”两个字符数组(char *),并将两个字符串复制到新数组中。我认为您会同意std::string更容易,但它也为您提供了更少的机会,可以在您的代码中引入细微的错误,从而使调试和维护更加简单。

答案 1 :(得分:2)

您必须先分配内存,例如:

char* name = new char[ BUFF_SIZE ];

然后使用strcpystrcat,但是..您有标记c++。使用std::string

std::string name3 = "SELECT account_id FROM players WHERE name = '"
                    + 
                    std::string( name ) 
                    + 
                    "'";

std::string name3 = "SELECT account_id FROM players WHERE name = '";
name3 += name;
name3 += "'"; // or name3.push_back( ';' );

注意如果name不是const char*,而是std::string,则您不需要进行显式转换,所以请参阅meagar的帖子

答案 2 :(得分:1)

您还可以将sprintf用于您所描述的内容。

此外,如果这是用于数据库连接,您可能需要考虑使用预准备语句。