如何从C++ 转换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();
)在悬空指针结果...
std::stringstream::str()
是你正在寻找的方法.
同 std::stringstream
:
templatestd::string YourClass::NumericToString(const T & NumericValue) { std::stringstream ss; ss << NumericValue; return ss.str(); }
std::stringstream
是一个更通用的工具.您可以使用更专业的类std::ostringstream
为此特定作业.
templatestd::string YourClass::NumericToString(const T & NumericValue) { std::ostringstream oss; oss << NumericValue; return oss.str(); }
如果您正在使用std::wstring
字符串类型,则必须更喜欢std::wstringstream
或std::wostringstream
替代.
templatestd::wstring YourClass::NumericToString(const T & NumericValue) { std::wostringstream woss; woss << NumericValue; return woss.str(); }
如果您希望字符串的字符类型可以在运行时选择,您还应该将其设置为模板变量.
templatestd::basic_string YourClass::NumericToString(const NumType & NumericValue) { std::basic_ostringstream oss; oss << NumericValue; return oss.str(); }
对于上述所有方法,您必须包含以下两个头文件.
#include#include
注意,NumericValue
上面示例中的参数也可以分别作为std::string
或与实例std::wstring
一起使用.它不必是数值.std::ostringstream
std::wostringstream
NumericValue
从内存中,您调用stringstream :: str()来获取std :: string值.