21

Как преобразовать int в строку в C++?

12

Заголовок: Как конвертировать int в эквивалентный string в C++? Есть ли другие способы?

Описание проблемы: Я сталкиваюсь с задачей преобразования целого числа (int) в строку (string) в C++. На данный момент я знаю о двух способах, которые можно использовать для достижения этой цели. Однако хотел бы узнать, существуют ли еще альтернативные методы.

Вот способы, которые я использую:

  1. Первый метод:
int a = 10;
char *intStr = itoa(a);
string str = string(intStr);
  1. Второй метод:
int a = 10;
stringstream ss;
ss << a;
string str = ss.str();

Интересно, есть ли другие, возможно, более современные или эффективные, способы выполнить эту задачу? Буду признателен за любую помощь!

5 ответ(ов)

0

Для более удобного преобразования целого числа в строку можно использовать stringstream:

#include <sstream>

int x = 42;          // Целое число
std::string str;     // Строка
std::ostringstream temp;  // 'temp' как временное
temp << x;
str = temp.str();    // str теперь содержит значение x как строку

Также можно создать отдельную функцию для этого:

#include <sstream>

std::string IntToString(int a)
{
    std::ostringstream temp;
    temp << a;
    return temp.str();
}

Такой подход делает код более чистым и переиспользуемым.

0

sprintf() довольно хорошо подходит для преобразования формата. Затем вы можете присвоить полученную C-строку C++ строке, как вы сделали в первом случае.

0

Первым делом добавьте следующие директивы:

#include <string>
#include <sstream>

Затем добавьте метод:

template <typename T>
std::string NumberToString(T pNumber)
{
    std::ostringstream oOStrStream;
    oOStrStream << pNumber;
    return oOStrStream.str();
}

Используйте этот метод следующим образом:

NumberToString(69);

или

int x = 69;
std::string vStr = NumberToString(x) + " Hello world!";

Этот код позволяет вам преобразовывать числа в строки, используя шаблонную функцию NumberToString, которая принимает любой тип, поддерживающий операцию вывода в поток.

0

В C++11 мы можем использовать функцию "to_string()" для преобразования целого числа в строку. Вот простой пример:

#include <iostream>
#include <string>

int main() {
    int x = 1612; // Объявляем целочисленную переменную
    std::string s = std::to_string(x); // Преобразуем целое число в строку
    std::cout << s << std::endl; // Выводим строку на экран

    return 0;
}

В этом коде мы объявляем переменную x типа int и инициализируем её значением 1612. Затем мы используем функцию std::to_string(), чтобы преобразовать x в строку и сохранить результат в переменной s. Наконец, мы выводим строковое представление числа на экран с помощью std::cout.

0

С помощью следующего кода довольно просто добавить синтакс sugar, который позволяет композировать строки "на лету" в стиле потоков:

#include <string>
#include <sstream>

struct strmake {
    std::stringstream s;
    template <typename T> strmake& operator << (const T& x) {
        s << x; return *this;
    }   
    operator std::string() {return s.str();}
};

Теперь вы можете добавлять к strmake() все, что угодно (при условии, что для этого определен оператор << (std::ostream& ..)), и использовать его вместо std::string.

Пример использования:

#include <iostream>

int main() {
    std::string x =
      strmake() << "Текущее время: " << 5+5 << ":" << 5*5 << " GST";
    std::cout << x << std::endl;
}

Таким образом, вы можете легко создавать строки, комбинируя текст и вычисления.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь