用整数连接两个QStrings

Kar*_*Tel 11 c++ qstring qt

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

int i = 5;
QString directory = ":/karim/pic" + i + ".jpg";
Run Code Online (Sandbox Code Playgroud)

在哪里+意味着我想连接字符串和整数(也就是说,directory应该是:/karim/pic5.jpg).我怎样才能做到这一点?

Seb*_*zus 32

对于像这样的事情,Qt的习惯是arg()QString 的功能.

QString directory = QString(":/karim/pic%1.jpg").arg(i);
Run Code Online (Sandbox Code Playgroud)

  • 稍微好一点的是`QStringLiteral(":/karim/pic%1.jpg").arg(i);`,它是在编译时生成的。https://woboq.com/blog/qstringliteral.html (3认同)

Cub*_*bbi 11

(编辑:这是在提到QString的编辑之前的问题的答案.对于QString,请参阅更新的答案)

这可以使用C++ 11作为非常类似的单行完成:

int i = 5;
std::string directory = ":/karim/pic" + std::to_string(i) + ".jpg";
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

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