Если вы хотите использовать +
для объединения всего, что имеет оператор вывода, вы можете предоставить шаблонную версию operator+
:
template <typename L, typename R> std::string operator+(L left, R right) {
std::ostringstream os;
os << left << right;
return os.str();
}
Тогда вы можете написать свои конкатенации простым способом:
std::string foo("the answer is ");
int i = 42;
std::string bar(foo + i);
std::cout << bar << std::endl;
Выход:
the answer is 42
Это не самый эффективный способ, но вам не нужен самый эффективный способ, если вы не выполняете много конкатенации внутри цикла.