Существует несколько вариантов, и любой из них зависит от контекста.
Самого простой способ
std::cout << text << i;
или если вы хотите это на одной линии
std::cout << text << i << endl;
Если вы пишете однопоточную программу, и если вы не зовете этот код много (где «много» - тысячи раз в секунду), тогда вы закончите.
Если вы пишете многопоточную программу и более одного потока записываете в cout, тогда этот простой код может вызвать у вас проблемы. Предположим, что библиотека, поставляемая вместе с вашим компилятором, сделала поток cout безопасным, чем любой его вызов, не будет прерван. Теперь предположим, что один поток использует этот код для записи «Player 1», а другой - «Player 2». Если вам повезет, вы получите следующее:
Player 1
Player 2
Если вам не повезет, вы можете получить что-то вроде следующего
Player Player 2
1
Проблема в том, что StD :: соиЬ < < < < тексту я < < endl; превращается в 3 вызова функций. Код эквивалентен следующему:
std::cout << text;
std::cout << i;
std::cout << endl;
Если вместо этого вы использовали Printf C-стиль, и снова ваш компилятор предоставил библиотеку времени выполнения с разумной безопасностью потока (каждый вызов функции атомный), то следующий код будет работать лучше:
printf("Player %d\n", i);
Будучи в состоянии сделать что-то в вызове одной функции позволяет ИО библиотеки обеспечивают синхронизацию под одеялом, и теперь вся ваша строка текста будет атомарно написано.
Для простых программ std :: cout отлично. Бросьте многопоточность или другие осложнения, и менее стильный printf начинает выглядеть более привлекательно.
Ха, вы можете использовать один из них! – jjnguy
Кроме того, здесь правильное слово 'concatenate/append integer to string' – Gishu
вы можете добавить в строку цифру по цифре. – user2971569