1. ホーム
  2. c++

[解決済み] c++でostringstreamを正しく使うにはどうしたらいいですか?

2022-02-14 18:34:13

質問事項

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;
    }

私のコーディングはひどいものです。私はまだかなり初心者ですが、私のアウトプットの例は次のとおりです。

"商品名: 映画チケット Unit left: 49 Price: 9.99 Revenue: $9.99"

"商品名:映画チケット Unit left: 4926 Price: 9.999.99 Revenue: $9.99239.76"

2つ目が表示されるべき場所

"商品名: 映画チケット Unit left: 26 Price: 9.99 Revenue: $239.76"

更新すればいいだけなのは分かっているのですが、そこで迷ってしまうのです。

どのように解決するのですか?

宣言する int_buffer , float_buffer および float_buffer2 内側 toString() 関数を使用します。クラス内で宣言しているため、これらのオブジェクトは保持され、あなたが toString() 関数に連結しています。 int_buffer , float_buffer および float_buffer2 を何度も何度も繰り返します。メソッドの中で宣言すると、それらは toString がアクティブになります。とにかく、やろうとしていることの割にはコードが多すぎます。単純にそうすればいいのです。

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