C++ 向字符添加文本*

C++ 向字符添加文本*,c++,sql,pointers,string-concatenation,C++,Sql,Pointers,String Concatenation,是否可以将文本添加到字符* 因为此代码会产生错误: name3 = "SELECT account_id FROM players WHERE name = '" + name + "'"; na3= C++ ch> */p>< p>你的问题用C++来标记,所以使用C++。去掉字符*,使用std::string: 您可以通过分配一个足以容纳两个字符的新数组,并将两个字符串复制到新数组中,来添加两个字符数组char*。我认为你会同意STD::String更简单,但是它也提供了更少的机会让你把代

是否可以将文本添加到字符*

因为此代码会产生错误:

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

na3= C++ ch> */p>< p>你的问题用C++来标记,所以使用C++。去掉字符*,使用std::string:


您可以通过分配一个足以容纳两个字符的新数组,并将两个字符串复制到新数组中,来添加两个字符数组char*。我认为你会同意STD::String更简单,但是它也提供了更少的机会让你把代码引入微妙的错误,使得调试和维护在路上变得更简单。

< P>你的问题用C++来标记,所以使用C++。去掉字符*,使用std::string:


您可以通过分配一个足以容纳两个字符的新数组,并将两个字符串复制到新数组中,来添加两个字符数组char*。我想您会同意std::string更简单,但它也减少了在代码中引入细微错误的机会,从而简化调试和维护。

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

char* name = new char[ BUFF_SIZE ];
然后使用strcpy和strcat,但是。。你有标签C++。使用std::string


注意:如果名称不是const char*,而是std::string,则不需要显式转换,因此请参阅meagar的文章,您必须首先分配内存,例如:

char* name = new char[ BUFF_SIZE ];
然后使用strcpy和strcat,但是。。你有标签C++。使用std::string

注意,如果名称不是const char*,而是std::string,则不需要显式转换,因此参考meagar的文章,您也可以将其用于所描述的内容

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

您也可以使用您所描述的。


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

作为旁注,如果您计划做大量的字符串连接,则应该使用STD::String String。另外,如果可以的话,不要使用内联SQL。作为旁注,如果您计划进行大量字符串连接,那么应该使用std::stringstream。另外,如果可以的话,不要使用内联SQL。std::string比这更聪明。最多需要std::stringname,其他显式声明只是杂乱无章。std::string比这更聪明。最多,您需要std::stringname,其他显式声明只是杂乱无章的,-1用于建议使用不安全的sprintf函数,-1用于准备语句,-1用于sprintf使用字符串、流,或者最坏的情况是snprintf,-1用于准备语句。说真的,听这家伙说。不要像那样连接SQL,*永远*。充其量,当给定某些输入时,您的程序将以奇怪的方式运行。在最坏的情况下,有人会利用这个容易发现的安全漏洞,做一些你会后悔的事情。同意准备好的声明。有关SQL注入的安全漏洞,请参阅。但是,如果您低估了缓冲区的大小,则sprintf可能会更加危险。-1用于建议使用不安全的sprintf函数。1用于准备语句,-1用于sprintf使用字符串、流,或者最坏情况下snprintf.+1用于准备语句。说真的,听这家伙说。不要像那样连接SQL,*永远*。充其量,当给定某些输入时,您的程序将以奇怪的方式运行。在最坏的情况下,有人会利用这个容易发现的安全漏洞,做一些你会后悔的事情。同意准备好的声明。有关SQL注入的安全漏洞,请参阅。但是,如果您低估了缓冲区的大小,sprintf可能会更加危险
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( ';' );