我维护的旧版代码会将文本收集到std::ostream
中。我想将其转换为std::string
。
我找到了将std::sstringstream
,std::ostringstream
等转换为std::string
但未明确std::ostream
转换为std::string
的示例。
我该怎么做? (仅限古代C ++ 98,请不要提升)
答案 0 :(得分:3)
如果您有stringstream
或ostreamstring
,对象或引用,只需使用符合您要求的ostringstream::str()
方法:提取string
。但是你知道这一点,你显然有ostream
个对象,而不是stringstream
或ostreamstring
。
如果您的ostream引用实际上是ostringstream
或stringstream
,请使用ostream::rdbuf
获取streambuf
,然后使用this post查看如何提取string
。
示例:
#include <iostream>
#include <sstream>
std::string toString( std::ostream& str )
{
std::ostringstream ss;
ss << str.rdbuf();
return ss.str();
}
int main() {
std::stringstream str;
str << "Hello";
std::string converted = toString( str );
std::cout << converted;
return 0;
}
现场演示:http://cpp.sh/6z6c
ostream
是ofstream
或iostream
,则很可能会清除其缓冲区,因此您可能无法将完整内容提取为上面提出的建议。答案 1 :(得分:0)
试试这个
std::ostringstream stream;
stream << "Some Text";
std::string str = stream.str();