3

データを ostream オブジェクトに出力する 1 つの関数と、まったく同じ形式で istream オブジェクトからクラスを初期化するコンストラクターがあります。すなわち

std::ostream& operator<<(std::ostream &os, const Matrix &m) {
    // Output to os
}

その後

Matrix::Matrix(std::istream& in) {
    // Read from in to construct the object
}

では、最初の関数の出力を 2 番目の関数の入力にプッシュするにはどうすればよいでしょうか。私は多くのことを試しましたが、主に試行錯誤しましたが、完全に失われました (つまり、使用するストリームの種類さえわかりません)。ありがとう

4

1 に答える 1

5

入力と出力の両方が必要なので、 と の両方を継承する の導関数が必要std::iostreamです。ファイル バッファではなく、メモリ バッファを使用したいようです。入力に使用する前に、ストリームを最初に「巻き戻す」ように呼び出してください。std::istreamstd::ostreamstd::stringstreamstream.seekg(0, std::ios::beg)

std::fstreamこのコードは、代わりにそれぞれの関数に渡すだけで、ファイル I/O に再利用することもできます。しかし、書き込みと読み取りが分離されるため、より良い選択になる可能性がありますstd::ofstreamstd::ifstream

于 2013-09-12T03:00:11.733 に答える