Як перетворити з 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
щоб число було числовим значенням.