5 ответов:
использовать .ул()-метод:
управляет содержимым базового строкового объекта.
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или .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быть числовым значением.
Я хотел бы добавить, что вы должны завершить буфер strstream с '\0' перед вызовом .ул.() метод. В противном случае вы получите плохие символы при сбросе строки.
Comments