如何将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::wstringtypes的string,则必须使用std::wstringstreamstd::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::stringstd::wstring传递,分别与std::ostringstreamstd::wostringstream实例一起使用。 NumericValue没有必要是一个数字值。

我想补充一点,在调用.str()方法之前,必须用'\ 0'终止strstream缓冲区。 否则,在转储string时会出现错误的字符。