Как объединить std::string и int в C++?
Я думал, что это будет очень просто, но у меня возникли некоторые трудности. У меня есть следующий код:
std::string name = "John";
int age = 21;
Как я могу объединить эти переменные, чтобы получить одну строку, например, "John21"
?
5 ответ(ов)
В C++11 вы можете использовать std::to_string
, чтобы преобразовать число в строку. Например:
auto result = name + std::to_string(age);
Таким образом, вы сможете конкатенировать строку и число, что очень удобно. Не забудьте подключить заголовочный файл <string>
, если вы еще этого не сделали.
Если у вас есть библиотека Boost, вы можете преобразовать целое число в строку, используя boost::lexical_cast<std::string>(age)
.
Другим способом является использование строковых потоков:
std::stringstream ss;
ss << age;
std::cout << name << ss.str() << std::endl;
Третий подход заключается в использовании sprintf
или snprintf
из стандартной библиотеки C:
char buffer[128];
snprintf(buffer, sizeof(buffer), "%s%d", name.c_str(), age);
std::cout << buffer << std::endl;
Некоторые другие участники обсуждения предложили использовать itoa
. Однако это НЕ стандартная функция, поэтому ваш код не будет переносимым, если вы ее используете. Существуют компиляторы, которые не поддерживают ее.
В вашем коде есть небольшая ошибка. Вы пытаетесь использовать объект std::ostringstream
вне функции, и это вызовет ошибку компиляции. Вот исправленный вариант:
#include <iostream>
#include <sstream>
int main() {
std::string name = "John"; // Пример имени
int age = 30; // Пример возраста
std::ostringstream o; // Создаем объект o
o << name << " " << age; // Добавляем строку и возраст в поток
std::cout << o.str(); // Выводим результат
return 0; // Завершаем программу
}
В этом примере мы создаем строку с именем и возрастом, затем выводим ее на экран. Не забудьте заменить значения name
и age
на те, которые вам нужны.
Вот перевод ответа на русском, в стиле StackOverflow:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
string itos(int i) // конвертирует int в string
{
stringstream s;
s << i;
return s.str();
}
Эта функция itos
использует stringstream
для преобразования целого числа в строку. Вы передаете целочисленное значение в функцию, и она возвращает его строковое представление. Это полезный способ выполнения такого преобразования в C++.
Оригинальный код я без стеснения заимствовал с сайта http://www.research.att.com/~bs/bs_faq2.html.
Самый простой способ:
string s = name + std::to_string(age);
Как преобразовать int в строку в C++?
Как обрезать std::string?
Как преобразовать std::string в const char* или char*
Что говорит стандарт C++ о размерах типов int и long?
Как преобразовать std::string в int?