【问题标题】:How do I use the ostringstream properly in c++?如何在 C++ 中正确使用 ostringstream?
【发布时间】:2012-09-02 05:44:23
【问题描述】:

当我的 toString() 方法被调用时,我试图返回一些信息,其中包括一个整数和一些浮点数。我了解到 ostringstream 的效果很好,但是当包含此方法的类被一遍又一遍地调用时,信息会堆积到我之前的输出中。这是我的代码

    ostringstream int_buffer, float_buffer, float_buffer2;

在我的课开始时介绍,然后

    string toString()
    {

        int_buffer << on_hand;
        float_buffer << price;
        float_buffer2 << generated_revenue;

        string stron_hand = int_buffer.str();
        string strprice = float_buffer.str();
        string strrev = float_buffer2.str();

        string output = "Product name: " + description + " Units left: " + stron_hand + " Price: " + strprice + " Revenue: $" + strrev;
        return output;
    }

我知道我的编码很糟糕,对此我还是很陌生,但我的输出示例是,

“产品名称:电影票剩余单位:49 价格:9.99 收入:9.99 美元”

“产品名称:电影票剩余单位:4926 价格:9.999.99 收入:9.99239.76 美元”

第二个应该显示在哪里

“产品名称:电影票剩余单位:26 价格:9.99 收入:239.76 美元”

我知道这只是更新的问题,但这就是我迷路的地方。

【问题讨论】:

    标签: c++ string ostringstream sstream


    【解决方案1】:

    toString() 函数中声明int_bufferfloat_bufferfloat_buffer2。因为您在类中声明,所以这些对象被保留,所以每次调用toString() 函数时,您都会一遍又一遍地连接到int_bufferfloat_bufferfloat_buffer2。如果您在方法内声明它们将仅在toString 处于活动状态时存在。无论如何,你正在为你想要做的事情做太多的代码。你可以这样做:

    std::string toString()
    {
        std::ostringstream buffer; 
        buffer << "Product name: "<< description << " Units left: " << on_hand << " Price: "<< price << " Revenue: $" << generated_revenue;
        return buffer.str();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-16
      • 2020-08-26
      • 2013-08-26
      • 1970-01-01
      • 2015-07-12
      • 2013-04-10
      相关资源
      最近更新 更多