如何在 C + + 中将 std::stringstream转换为 std::string?
std::stringstream
std::string
我需要调用字符串流上的方法吗?
从内存中调用 stringstream::str()以取出 std::string值。
stringstream::str()
yourStringStream.str()
使用 . str ()-方法:
管理基础字符串对象的内容。 1)返回基础字符串的副本,就像调用 rdbuf()->str()一样。 2)替换底层字符串的内容,就好像通过调用 rdbuf()->str(new_str)..。 笔记 Str 返回的底层字符串的副本是一个临时对象,将在表达式结束时被销毁,因此直接对 str()的结果(例如在 auto *ptr = out.str().c_str();中)调用 c_str()会导致一个迷途指针... ..。
管理基础字符串对象的内容。
1)返回基础字符串的副本,就像调用 rdbuf()->str()一样。
rdbuf()->str()
2)替换底层字符串的内容,就好像通过调用 rdbuf()->str(new_str)..。
rdbuf()->str(new_str)
笔记
Str 返回的底层字符串的副本是一个临时对象,将在表达式结束时被销毁,因此直接对 str()的结果(例如在 auto *ptr = out.str().c_str();中)调用 c_str()会导致一个迷途指针... ..。
str()
auto *ptr = out.str().c_str();
c_str()
std::stringstream::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来完成这个特定的任务。
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。
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不一定是一个数值。
NumericValue