c++ - 如何在参数行中使用变量?

标签 c++ qt4

我正在使用 SOCI 从我的 QT4 C++ 应用程序建立 MYSQL 连接。我可以对 mysql 服务器 IP、用户名和密码进行硬编码,但我宁愿将此信息作为变量传递。

例如,我想做这样的事情,但是没有接受这些参数的函数:

char host [9];
sprintf(host, "192.x.x.x");
session sql(mysql, "host=%s db=dbname user=user password=password", host);

我也试过:

string host = "192.x.x.x";

session sql(mysql,
            boost::format("host=%1% db=dbname user=user password='pword'",
                          %host));

但这也失败了。

更新:我能够像这样解决问题:

QString connection;
connection.append("host=" + host +
                  " db=dbname user=" + uname +
                  " password=" + pword);

session sql(mysql, connection.toLatin1().data());

最佳答案

尝试使用 QString 的 arg 函数。

session sql(mysql, QString("host=%1 db=%2 user=%3 password=%4").arg(sqlserver).arg(dbname).arg(user).arg(password));

我知道这很丑陋,Qt 应该想出一个更漂亮的解决方案,但它确实有效。

关于c++ - 如何在参数行中使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4454640/

相关文章:

c++ - 如何测试表达式是否是临时的?

c++ - 使用复制构造函数进行 = 重载

c++ - 使用 C++11\u vs\x 输出 Unicode 字符串时输出不同?

qt - 什么决定了 QFileDialog 中文件的排序?

c++ - 如何将 QListView 项目保存到文件

java - 在 PCL 的 Project Tango 中可视化点云

javascript - 防止 QWebView 中的表单重新加载

Qt 4.5 - 如何使用模板类型执行排队连接?

c++ - 使用 QGraphicsView 时小部件背景不透明但使用 QGridLayout 时透明

c++ - VS C++ 编译器使用哪些不同的处理器寄存器?