Як перетворити з std::stringstreamна std::stringв C ++?
Чи потрібно викликати метод у потоковому потоці?
Як перетворити з std::stringstreamна std::stringв C ++?
Чи потрібно викликати метод у потоковому потоці?
Відповіді:
Сігналы абмеркавання
yourStringStream.str()
Використовуйте .str () - метод :
Керує вмістом основного об'єкта рядка.
1) Повертає копію базового рядка, як якщо б виклик
rdbuf()->str().2) Заміщує вміст підрядного рядка, ніби зателефонувавши
rdbuf()->str(new_str)...Примітки
Копія базового рядка, повернутого str, є тимчасовим об'єктом, який буде знищений в кінці виразу, тому безпосередньо виклик
c_str()результатуstr()(наприклад, вauto *ptr = out.str().c_str();) призводить до звисаючого покажчика ...
std::stringstream::str() - це метод, який ви шукаєте.
З std::stringstream:
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::stringstream ss;
ss << NumericValue;
return ss.str();
}
std::stringstreamє більш загальним інструментом. Ви можете використовувати більш спеціалізований клас std::ostringstreamдля цієї конкретної роботи.
template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::ostringstream oss;
oss << NumericValue;
return oss.str();
}
Якщо ви працюєте з std::wstringтипом рядків, вам слід віддати перевагу std::wstringstreamабо std::wostringstreamзамість цього.
template <class T>
std::wstring YourClass::NumericToString(const T & NumericValue)
{
std::wostringstream woss;
woss << NumericValue;
return woss.str();
}
якщо ви хочете, щоб тип символу рядка міг бути вибраний під час виконання, ви також повинні зробити його змінною шаблону.
template <class CharType, class NumType>
std::basic_string<CharType> YourClass::NumericToString(const NumType & NumericValue)
{
std::basic_ostringstream<CharType> oss;
oss << NumericValue;
return oss.str();
}
Для всіх вищевказаних методів необхідно включити наступні два файли заголовків.
#include <string>
#include <sstream>
Зауважимо, що аргумент NumericValueу наведених вище прикладах також може передаватися як std::stringабо std::wstringдля використання відповідно з std::ostringstreamі std::wostringstreamекземплярами. Це не обов'язково, NumericValueщоб число було числовим значенням.