Qtを使用してC++でこのようなことをしたい:
int i = 5;
QString directory = ":/karim/pic" + i + ".jpg";
ここで、+
は、文字列と整数を連結することを意味します(つまり、directory
は:/karim/pic5.jpg
である必要があります)。これどうやってするの?
このようなものに対するQtのイディオムは、QStringの arg()
functionです。
QString directory = QString(":/karim/pic%1.jpg").arg(i);
(編集:これは、QStringについて言及した編集前の質問に対する回答です。QStringについては、 新しい回答 を参照してください)
これは、 C++ 11 を使用して非常によく似たワンライナーとして実行できます。
int i = 5;
std::string directory = ":/karim/pic" + std::to_string(i) + ".jpg";
古いコンパイラでは、次のように置き換えることができます Boost :
int i = 5;
std::string directory = ":/karim/pic" + boost::lexical_cast<std::string>(i) + ".jpg";
しかし、それを行う古典的な方法は、文字列ストリームオブジェクトを使用することです。
int i = 5;
std::ostringstream oss;
oss << ":/karim/pic" << i << ".jpg";
std::string directory = oss.str();
#include <sstream>
#include <string>
int i = 5;
std::stringstream s;
s << ":/karim/pic" << i << ".jpg";
std::string directory = s.str();
Stringstreamを見てください:
http://cplusplus.com/reference/iostream/stringstream/
ostringstream oss(ostringstream::out);
oss << ":/karim/pic";
oss << i
oss << ".jpg";
cout << oss.str();