将 ostream 转换为标准字符串

82

我对C++ STL非常陌生,所以这可能很琐碎。我有一个包含一些文本的ostream变量。

ostream* pout;
(*pout) << "Some Text";

有没有一种方法可以提取流并将其存储在类型为char*的字符串中?

3个回答

212

这个问题涉及将ostream转换为字符串,而不是将ostringstream转换为字符串。

对于那些希望获得有关ostream的实际问题答案的人,请尝试以下方法:

void someFunc(std::ostream out)
{
    std::stringstream ss;
    ss << out.rdbuf();
    std::string myString = ss.str();
}

4
我会给你加分,因为你很暴躁。好的,答案正确的话也会加分。 - moodboom
38
这是正确答案。上面标记为正确的答案并没有回答问题。 - Matthew James Briggs
7
该参数应该是 std::ostream& out,因为 std::ostream 是不可复制的。 - Brandon

71
     std::ostringstream stream;
     stream << "Some Text";
     std::string str =  stream.str();
     const char* chr = str.c_str();

我在不到一个小时前撰写的问题的答案中解释了正在发生的事情。


14
请包含必要的头文件。#include <string>#include <sstream> - Prasoon Saurav
18
不是 ostream,而是 ostringstream。 - Vanuan
4
注意,ostringstream << int 看起来返回一个basic_ostream,但不会改变 lhs 的类型。因此,类似oss << value; return oss.str();这样的代码可以编译通过,而return (oss << value).str();则不能。 - ArtOfWarfare
8
这并没有回答问题,问题是“如何将 ostream 转换为 std:string”。 - Danny
10
奇怪。从我看到的内容来看,问题的标题和正文都没有包含“ostringstream”一词,而你的回答也没有包含“ostream”一词。 - Danny
显示剩余3条评论

7

尝试使用 std::ostringstream

   std::ostringstream os;
   os<<"Hello world";
   std::string s=os.str();
   const char *p = s.c_str();

1
问题不在于std::ostringstream,而在于std::ostreamstd::ostream没有.str()方法。 - Marc Dirven

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接