将文本作为字符串和文本之间的文本发送之间的区别

时间:2013-02-15 17:45:21

标签: c++ string qt stream filepath

我使用mysql ++库连接到我的数据库。我创建了一个连接和查询:

Connection conn(false);
conn.connect("database", "localhost", "user", "pass");
Query query = conn.query();

然后我可以向数据库发送一个查询,如:

query << "select name from my_table1, my_table2 where age=20" 

但是我想发送一个变量而不是20个。我试着这样做:

std::stringstream ss; //create a stringstream
ss << my_number //add number to the stream
std::string number = ss.str();
query << "select name from my_table1, my_table2 where age="+number; 

不幸的是,它不起作用。 我的第二个问题是类似的。我创建了一个QPixmap对象(这里QPixmap无关紧要),我要给构造函数一个路径来指向我的图像:

std:string name;
(...)
std::string path = "/home/root/img/"+name+".png"; //name is a variable string
QPixmap *tmp = new QPixmap(QString::fromUtf8(path.c_str())); //conversion from string to QString

2 个答案:

答案 0 :(得分:3)

query << "select name from my_table1, my_table2 where age="+number; 

应该是:

query << "select name from my_table1, my_table2 where age=" << number; 

因为+不是有效的C ++流连接运算符。

QPixmap有什么问题?也许这应该是一个单独的问题?

答案 1 :(得分:2)

对于你的第二个问题,我建议你改变它:

std:string name;
(...)
std::string path = "/home/root/img/"+name+".png"; //name is a variable string

对此:

const QString name;
...
const QString path = QString("/home/root/img/%1.png").arg(name);
....
QPixmap tmp(path);