【发布时间】:2019-12-05 07:57:30
【问题描述】:
在 c++ 中,如何根据文字和附加的 long/int 值有效地创建 c 字符串?从逻辑上讲,我想做这样的事情:
const char *sql = "select * from MyTable where ID = " + longId;
longId 是一个 int/long 参数。
【问题讨论】:
-
使用
std::string来完成组装工作,就像你展示的那样,但是输入std::to_string将longId转换为string,然后将cstring 取出使用c_str方法组装的string。打开优化,编译器应该会处理剩下的事情。 -
视情况而定。字符串
sql是仅在创建它的上下文中使用,还是会从函数返回并由该函数的调用者使用?如果是后者,您需要仔细管理字符串的生命周期——既要确保它在需要时存在,又要避免内存泄漏。通常最好将字符串作为std::string组装和使用,因为这样它可以(与C 字符串不同)通过值安全地传递,通过引用传递(当它存在时)并且不会引入内存泄漏.constc 字符串也可以很容易地从std::string获得。 -
仅在函数内部——这在单个函数中是短暂的,它从只有 C 接口的 SQLite 数据库执行 DB 检索。
-
Sql库一般会提供
bind的方法来避免exploit手动串接。 -
@Jarod42 是的,谢谢我知道,但是,我现在只专注于 c 和 c++ 字符串机制,并试图学习这一点——对于这个基本的东西似乎没有立即明确的答案确实有很多东西要学!