(РЕДАКТИРОВАТЬ: это ответ на вопрос до редактирования, в котором упоминается 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