为什么这段代码会导致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
:
#include <sstream>
std::ostringstream s;
s << "select logged from login where id = " << ClientID;
std::string query(s.str());
Run Code Online (Sandbox Code Playgroud)std::to_string
(C++ 11)
std::string query("select logged from login where id = " +
std::to_string(ClientID));
Run Code Online (Sandbox Code Playgroud)#include <boost/lexical_cast.hpp>
std::string query("select logged from login where id = " +
boost::lexical_cast<std::string>(ClientID));
Run Code Online (Sandbox Code Playgroud)您不能将int转换为char*来获取字符串.试试这个:
std::ostringstream sstream;
sstream << "select logged from login where id = " << ClientID;
std::string query = sstream.str();
Run Code Online (Sandbox Code Playgroud)
您正在强制转换ClientID
为 char* ,导致该函数假定它是一个以 null 结尾的 char 数组,但事实并非如此。
来自 cplusplus.com :
字符串&追加(const char * s);追加由 s 指向的空终止字符序列(C 字符串)形成的字符串的副本。该字符序列的长度由空字符的第一次出现确定(由 Traits.length(s) 确定)。
归档时间: |
|
查看次数: |
150307 次 |
最近记录: |