用整数连接两个QStrings

时间:2011-08-10 13:21:01

标签: c++ qt qstring

我想在C ++中使用Qt执行类似的操作:

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

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

4 个答案:

答案 0 :(得分:32)

Qt这样的事情就是QString的arg()函数。

QString directory = QString(":/karim/pic%1.jpg").arg(i);

答案 1 :(得分:11)

(编辑:这是在提到QString的编辑之前的问题的答案。对于QString,请参阅the newer answer

这可以使用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

答案 2 :(得分:2)

#include <sstream>
#include <string>

int i = 5;

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

std::string directory = s.str();

答案 3 :(得分:2)

看一下stringstream:

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

ostringstream oss(ostringstream::out);

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

cout << oss.str();