如何在 C + + 中将字符串流转换为字符串?

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

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

201967 次浏览

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

yourStringStream.str()

使用 . str ()-方法:

管理基础字符串对象的内容。

1)返回基础字符串的副本,就像调用 rdbuf()->str()一样。

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

笔记

Str 返回的底层字符串的副本是一个临时对象,将在表达式结束时被销毁,因此直接对 str()的结果(例如在 auto *ptr = out.str().c_str();中)调用 c_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来完成这个特定的任务。

template <class T>
std::string YourClass::NumericToString(const T & NumericValue)
{
std::ostringstream oss;
oss << NumericValue;
return oss.str();
}

如果使用的是 std::wstring类型的字符串,则必须改为使用 std::wstringstreamstd::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::wstring传递,分别与 std::ostringstreamstd::wostringstream实例一起使用。NumericValue不一定是一个数值。