首页 > 后端开发 > C++ > 为什么在 C 中将整数附加到字符串会导致断言失败?

为什么在 C 中将整数附加到字符串会导致断言失败?

Susan Sarandon
发布: 2024-11-11 11:04:03
原创
630 人浏览过

Why Does Appending an Integer to a String in C   Cause an Assertion Failure?

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板