c++中,怎么在sqlite中动态添加变量值
int a1 = 1;
int a2 = 10;
char *sqliteInsert = "insert into test123 values("+a1+","+a2+")";
上面的写法是错误的。问题是c++中有没有类似Java中tostring的用法。
千百小吴克
11 years, 5 months ago
Answers
Binding Values To Prepared Statements ( http://www.sqlite.org/c3ref/bind_blob.html )
SS.HH
answered 11 years, 5 months ago
嗯,你其实是打算问,在C++中怎么把int类型数据转换成string吧?
我觉得最简单的办法,就是用
std::stringstream
#include <sstream>
std::stringstream query;
query << "insert into test123 values(" << a1 << ", " << a2 << ")";
char *sqliteInsert = query.str().c_str();
更新:我这段代码有问题,
query.str().c_str()
返回的结果应该进行
const_cast
,见
@pezy
的答案。
皇家ミ烈焰
answered 11 years, 5 months ago
-
你的写法为什么是错的? 因为
char* / const char*
类型不支持+
操作符。你应该使用std::string
. -
有没有类似
Java
中toString
的用法? 有。
-
使用C++11,可以用
std::to_string
方法。 -
C++0x,可以用
stringstream
,如 @spacewander 的答案。
c++11:
cpp
#include <string> int a1 = 1; int a2 = 10; std::string insertStr = "insert into test123 values(" + std::to_string(a1) + "," + std::to_string(a2) + ")"; char *sqliteInsert = const_cast<char*>(insertStr.c_str());
c++0x:
cpp
#include <sstream> int a1 = 1; int a2 = 10; std::ostringstream oss; oss << "insert into test123 values(" << a1 << "," << a2 << ")"; char *sqliteInsert = const_cast<char*>(oss.str().c_str());
注意:
std::string::c_str()
返回值是
const char *
,所以直接将其赋值给
char *
,编译器可能会给出 error。安全的方式是对其进行
const_cast
.
布拉克莫亚
answered 11 years, 5 months ago