将int附加到std :: string

Hak*_*n89 69 c++ std

为什么这段代码会导致Debug Assertion失败?

   std::string query;
   int ClientID = 666;
   query = "select logged from login where id = ";
   query.append((char *)ClientID);
Run Code Online (Sandbox Code Playgroud)

hmj*_*mjd 198

std::string::append()方法期望其参数为以NULL结尾的字符串(char*).

有几种方法可以产生一种string含有int:

  • 对于std :: to_string为+1 (80认同)
  • +1 :: boost :: lexical_cast. (6认同)
  • +1清晰,干净,完整的答案 (4认同)

luk*_*uke 5

您不能将int转换为char*来获取字符串.试试这个:

std::ostringstream sstream;
sstream << "select logged from login where id = " << ClientID;
std::string query = sstream.str();
Run Code Online (Sandbox Code Playgroud)

stringstream参考


Wea*_*Fox 2

您正在强制转换ClientID为 char* ,导致该函数假定它是一个以 null 结尾的 char 数组,但事实并非如此。

来自 cplusplus.com :

字符串&追加(const char * s);追加由 s 指向的空终止字符序列(C 字符串)形成的字符串的副本。该字符序列的长度由空字符的第一次出现确定(由 Traits.length(s) 确定)。