在 C 中将整数附加到字符串:断言失败故障排除
考虑以下尝试将整数附加到字符串的代码:
std::string query; int ClientID = 666; query = "select logged from login where id = "; query.append((char *)ClientID);
但是,此代码会触发调试断言 失败。要理解原因,我们需要检查 std::string::append() 的预期行为。
std::string::append() 采用 char* 参数,该参数应该是 NULL 终止的C 风格的字符串。但是,在我们的例子中,我们将原始指针传递给整数 ClientID,该指针不是以 NULL 结尾的字符串。
解决方案
附加将整数转换为 C 中的字符串,您有多种选择:
1。 std::ostringstream
#include <sstream> std::ostringstream s; s << "select logged from login where id = " << ClientID; std::string query(s.str());
2。 std::to_string (C 11 及更高版本)
std::string query("select logged from login where id = " + std::to_string(ClientID));
3. Boost::lexical_cast
#include <boost/lexical_cast.hpp> std::string query("select logged from login where id = " + boost::lexical_cast<std::string>(ClientID));
每种方法都会正确地将整数 ClientID 转换为字符串并将其附加到基本字符串,从而生成有效的字符串,而不会触发断言失败。
以上是为什么在 C 中将整数附加到字符串会导致断言失败?的详细内容。更多信息请关注PHP中文网其他相关文章!