Как мне преобразовать из 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()(например, inauto *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чтобы это было числовое значение.