如何将string转换为C ++中的string?
如何从C ++中将std::stringstream
转换为std::stringstream
?
我是否需要在stringstream上调用方法?
yourStringStream.str()
使用.str() – 方法 :
pipe理底层string对象的内容。
1)像调用
rdbuf()->str()
一样返回底层string的副本。2)像调用
rdbuf()->str(new_str)
一样replace底层string的内容…笔记
str返回的底层string的副本是一个临时对象,将在expression式的末尾被析构,所以直接对
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
types的string,则必须使用std::wstringstream
或std::wostringstream
。
template <class T> std::wstring YourClass::NumericToString(const T & NumericValue) { std::wostringstream woss; woss << NumericValue; return woss.str(); }
如果你希望你的string的字符types可以在运行时select,你也应该使它成为一个模板variables。
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'终止strstream缓冲区。 否则,在转储string时会出现错误的字符。