【问题标题】:Converting ostream into standard string将 ostream 转换为标准字符串
【发布时间】:2011-03-31 14:26:30
【问题描述】:

我对 C++ STL 很陌生,所以这可能是微不足道的。我有一个 ostream 变量,其中包含一些文本。

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

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

【问题讨论】:

    标签: c++ stl iostream


    【解决方案1】:

    问题是ostream 转字符串,不是 ostringstream 转字符串。

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

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

    【讨论】:

    • 我会给你加分,因为你是个脾气暴躁的人。好吧..对于正确的答案,呵呵。
    • 这是正确答案。上面标记为正确的答案没有回答问题。
    • 参数应该是std::ostream&amp; out,因为std::ostream是不可复制的。
    【解决方案2】:
         std::ostringstream stream;
         stream << "Some Text";
         std::string str =  stream.str();
         const char* chr = str.c_str();
    

    我在回答这个question 时解释了发生了什么,这是我在一小时前写的。

    【讨论】:

    • 包括必要的标题 .#include &lt;string&gt;#include &lt;sstream&gt;
    • 不是 ostream。它是 ostringstream
    • 请注意,ostringstream oss << value; return oss.str(); 之类的东西会编译,而return (oss &lt;&lt; value).str(); 则不会。
    • 这没有回答问题,即“将 ostream 转换为 std:string”
    • 很奇怪。据我所知,问题的标题和文本均不包含“ostringstream”一词,而您的答案不包含“ostream”一词。
    【解决方案3】:

    试试std::ostringstream

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

    【讨论】:

    • 问题不是关于std::ostringstream,而是关于std::ostreamstd::ostream 没有方法 .str()
    猜你喜欢
    • 2021-10-13
    • 2012-05-19
    • 2012-01-26
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多