

今回の目的はint型の配列に入っている値を取り出して、それらをコンマと１スペースをそれぞれの数字の値の間に入れてstring型の変数に入れることです。しかし、以下のプログラムでは、outputに入るのは1,
しか入りません。試してみたことは、スペースを除き、それぞれの数字の間にコンマだけを入れてみました。その結果、1,4,7,10,13
がoutputに入りましたが、これは実際にやりたいことではありません。コンマの後ろに一つスペースを入れたいです。これを解決策分かる方いらしたら、よろしくお願います。

[code]

    #include <iostream>
    #include <sstream>
    
    using namespace std;
    const int SIZE = 5;
    int main() {
        int array[SIZE] = {1, 4, 7, 10, 13};
        string output;
        stringstream ss;
    
        for(int i = 0; i < SIZE; i++)
        {
            ss << array[i] << ", ";
        }
        
        ss >> output;
    
        cout << "The result should be 1, 4, 7, 10, 13   Not like this: 1,4,7,10,13" << endl;
        cout << "The result is " << output << endl;
        return 0;
    }
    
[/code]


CC BY-SA 4.0
2021-10-01T10:19:55.177
82798
2021-10-01T11:10:30.713
45177
question
c++
sstreamライブラリーの使いかたを忘れてしまいました。目的は配列の中に入っているint型の値をstring型に直し、さらに数字と数字の間にコンマとスペース1つを入れたいです。


`ss >> output`だとスペースの手前までしか取り出せないので、まとめて取り出す`ss.str()`を使いましょう。  
あと、このままだと末尾に余計な`, `が追加されてしまうので、少し手を入れています。

[code]

    #include <iostream>
    #include <sstream>
    
    using namespace std;
    const int SIZE = 5;
    int main() {
        int array[SIZE] = { 1, 4, 7, 10, 13 };
        string output;
        stringstream ss;
    
        for (int i = 0; i < SIZE; i++)
        {
            if (i > 0)
                ss << ", ";
            ss << array[i];
        }
    
        output = ss.str();
    
        cout << "The result should be 1, 4, 7, 10, 13   Not like this: 1,4,7,10,13" << endl;
        cout << "The result is " << output << endl;
        return 0;
    }
    
[/code]


CC BY-SA 4.0
2021-10-01T11:10:30.713
82801
2021-10-01T11:10:30.713
43506
82798
answer