Сегодня я был удивлен, когда попытался объединить std::string
с int
. Рассмотрим следующий MWE:
#include <iostream>
#include <string>
void print(const std::string& text)
{
std::cout << "The string is: " << text << ".\n";
}
int main()
{
print("iteration_" + 1);
return 0;
}
Вместо печати
The string is: iteration_1.
, чего я ожидал, он печатает
The string is: teration_.
Что именно происходит в фоновом режиме? Преобразуется ли строка по какой-либо причине в char[]
или что-то в этом роде? Документация по оператора + не перечисляет ни одного с std::string
и int
.
И как правильно объединить std::string
с числом? Мне действительно нужно бросить их оба в std::stringstream
или преобразовать число в std::string
явно с std::to_string()
?