Как мне преобразовать из std::stringstream в std::string в С++?
Нужно ли мне вызвать метод в потоке строк?
Как мне преобразовать из std::stringstream в std::string в С++?
Нужно ли мне вызвать метод в потоке строк?
yourStringStream.str()
Используйте . str() - метод:
Управляет содержимым базового строкового объекта.
1) Возвращает копию базовой строки, как если бы она вызывала
rdbuf()->str().2) Заменяет содержимое базовой строки, как если бы она вызывала
rdbuf()->str(new_str)...Примечания
Копия базовой строки, возвращаемой str, является временным объектом, который будет разрушен в конце выражения, поэтому непосредственно вызываем
c_str()по результатуstr()(например, вauto *ptr = out.str().c_str();) приводит к зависанию указателя...
Из памяти вы вызываете stringstream:: str(), чтобы получить значение std::string.
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 было числовым значением.
Я хотел бы добавить, что перед вызовом метода .str() вы должны завершить строковый буфер с '\ 0'. В противном случае вы получите плохие символы при сбросе строки.