145

如何在 C++ 中转换std::stringstream为?std::string

我需要在字符串流上调用方法吗?

4

4 回答 4

243

​​​​​​​​​</p>

yourStringStream.str()
于 2009-03-19T16:38:00.210 回答
77

使用.str() 方法

管理底层字符串对象的内容。

1) 如同通过调用一样返回底层字符串的副本rdbuf()->str()

2) 替换底层字符串的内容,就像调用rdbuf()->str(new_str)...

笔记

str 返回的底层字符串的副本是一个临时对象,它将在表达式的末尾被破坏,因此直接调用(例如 in )c_str()的结果会导致悬空指针......str()auto *ptr = out.str().c_str();

于 2009-03-19T16:38:02.660 回答
16

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::wstringstreamorstd::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::stringstd::wstringstd::ostringstreamstd::wostringstream实例一起使用。不必NumericValue是数值。

于 2015-09-26T20:53:19.240 回答
11

从内存中,您调用stringstream::str()以获取std::string值。

于 2009-03-19T16:37:57.403 回答