Как преобразовать int в строку в C++?
Заголовок: Как конвертировать int
в эквивалентный string
в C++? Есть ли другие способы?
Описание проблемы:
Я сталкиваюсь с задачей преобразования целого числа (int
) в строку (string
) в C++. На данный момент я знаю о двух способах, которые можно использовать для достижения этой цели. Однако хотел бы узнать, существуют ли еще альтернативные методы.
Вот способы, которые я использую:
- Первый метод:
int a = 10;
char *intStr = itoa(a);
string str = string(intStr);
- Второй метод:
int a = 10;
stringstream ss;
ss << a;
string str = ss.str();
Интересно, есть ли другие, возможно, более современные или эффективные, способы выполнить эту задачу? Буду признателен за любую помощь!
5 ответ(ов)
Для более удобного преобразования целого числа в строку можно использовать 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();
}
Такой подход делает код более чистым и переиспользуемым.
sprintf()
довольно хорошо подходит для преобразования формата. Затем вы можете присвоить полученную C-строку C++ строке, как вы сделали в первом случае.
Первым делом добавьте следующие директивы:
#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
, которая принимает любой тип, поддерживающий операцию вывода в поток.
В 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
.
С помощью следующего кода довольно просто добавить синтакс 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;
}
Таким образом, вы можете легко создавать строки, комбинируя текст и вычисления.
Как преобразовать строку в int в Java?
Как перебрать слова в строке?
Какова разница между 'typedef' и 'using'?
`std::wstring` против `std::string`: когда использовать и в чем разница?
Как преобразовать int в String?