7

Как объединить std::string и int в C++?

27

Я думал, что это будет очень просто, но у меня возникли некоторые трудности. У меня есть следующий код:

std::string name = "John";
int age = 21;

Как я могу объединить эти переменные, чтобы получить одну строку, например, "John21"?

5 ответ(ов)

3

В C++11 вы можете использовать std::to_string, чтобы преобразовать число в строку. Например:

auto result = name + std::to_string(age);

Таким образом, вы сможете конкатенировать строку и число, что очень удобно. Не забудьте подключить заголовочный файл <string>, если вы еще этого не сделали.

0

Если у вас есть библиотека 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. Однако это НЕ стандартная функция, поэтому ваш код не будет переносимым, если вы ее используете. Существуют компиляторы, которые не поддерживают ее.

0

В вашем коде есть небольшая ошибка. Вы пытаетесь использовать объект 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 на те, которые вам нужны.

0

Вот перевод ответа на русском, в стиле 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.

0

Самый простой способ:

string s = name + std::to_string(age);
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь