0

isstreamからの入力があります

1 2
3 4
5 6

>>オペレーターをオーバーロードする isstream からこれを設定したいと思います

入力は次のようになります

Matrix m;
string input = "1 2 \n 3 4\n 5 6\n";
istringstream ss(input);
ss >> m;

>> isstream から行列を解析する演算子を実装するにはどうすればよいですか?

以下のコードを試してみましたが、peek 呼び出しは改行を無視しているようです

std::istream& operator>>(std::istream& is, Matrix& s)
{
    vector<vector<int>> elements;

    int n;

    while (!is.eof())
    {
        vector<int> row;
        while ((is.peek() != '\n') && (is >> n))
        {
            row.push_back(n);
        }
        is.ignore(numeric_limits<streamsize>::max(), '\n');
        elements.push_back(row);
    }

    return is;
}
4

1 に答える 1