18

我想使用 Qt 在 C++ 中做这样的事情:

int i = 5;
QString directory = ":/karim/pic" + i + ".jpg";

where+表示我想连接字符串和整数(即directory应该是:/karim/pic5.jpg)。我怎样才能做到这一点?

4

4 回答 4

38

Qt 对这类事情的习惯用法是arg()QString 的函数。

QString directory = QString(":/karim/pic%1.jpg").arg(i);
于 2011-08-10T17:03:32.253 回答
12

(编辑:这是对提到 QString 的编辑之前的问题的答案。对于 QString,请参阅较新的答案

这可以使用C++11作为非常相似的单行代码来完成:

int i = 5;
std::string directory = ":/karim/pic" + std::to_string(i) + ".jpg";

测试:https ://ideone.com/jIAxE

对于较旧的编译器,它可以用Boost代替:

int i = 5;
std::string directory = ":/karim/pic" + boost::lexical_cast<std::string>(i) + ".jpg";

测试:https ://ideone.com/LFtt7

但经典的方法是使用字符串流对象。

int i = 5;
std::ostringstream oss;
oss << ":/karim/pic" << i << ".jpg";
std::string directory = oss.str();

测试:https ://ideone.com/6QVPv

于 2011-08-10T13:25:30.117 回答
2
#include <sstream>
#include <string>

int i = 5;

std::stringstream s;
s << ":/karim/pic" << i << ".jpg";

std::string directory = s.str();
于 2011-08-10T13:25:03.050 回答
2

看看字符串流:

http://cplusplus.com/reference/iostream/stringstream/

ostringstream oss(ostringstream::out);

oss << ":/karim/pic";
oss << i
oss << ".jpg";

cout << oss.str();
于 2011-08-10T13:25:33.530 回答