将ostream转换为标准字符串

Ste*_*ehl 61 c++ iostream stl

我是C++ STL的新手,所以这可能是微不足道的.我有一个ostream变量,里面有一些文字.

ostream* pout;
(*pout) << "Some Text";
Run Code Online (Sandbox Code Playgroud)

有没有办法提取流并将其存储在一个类型的字符串char*

小智 154

问题是ostream字符串,而不是 ostringstream字符串.

对于那些有兴趣回答实际问题(特定于ostream)的人,试试这个:

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

  • 这是正确的答案.上面的答案,标记为正确,不回答问题. (27认同)
  • 我会给你点数作为一个傻瓜.好吧..而且对于正确答案,嘿. (3认同)
  • 该参数应为“ std :: ostream&out”,因为“ std :: ostream”不可复制。 (2认同)

Jam*_*ran 58

     std::ostringstream stream;
     stream << "Some Text";
     std::string str =  stream.str();
     const char* chr = str.c_str();
Run Code Online (Sandbox Code Playgroud)

我解释了这个问题的答案,这个问题是我一小时前写的.

  • 这不是ostream.它是ostringstream (11认同)
  • 包括必要的标题.`#include <string>`和`#include <sstream>` (9认同)
  • 奇怪的.从我看到的,问题的标题和文字都不包含"ostringstream"这个词,而你的答案不包含"ostream"这个词. (6认同)
  • 注意ostringstream << int似乎返回一个basic_ostream但不会改变lhs的类型?因此具有类似于"oss"的价值; return oss.str();`将在`return(oss << value).str();`的情况下编译. (4认同)
  • 这不回答问题,即"将ostream转换为std:string" (3认同)

Pra*_*rav 6

尝试 std::ostringstream

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