0

皆さん、ここに興味深いチャレンジがあります。テキスト ファイルが与えられ、情報を 1 行ずつ処理することになっています。個々の行を取得できる限り、処理部分は自明です。ただし、次の課題があります。

  1. コードで FOR/WHILE ループを使用せずに実行する必要があります。(これには再帰が含まれます)
  2. 標準 C++ ライブラリの使用のみ許可されています。

現在、私の最善の解決策は次のとおり です。ファイルを1行ずつ反復処理できるC++イテレータはありますか? しかし、独自の反復子クラスを作成したり、std::string のプロキシを実装したりする必要のない、より良いものを望んでいます。

PSこれは学校の課題用であり、ここでの課題は標準機能とアルゴリズムの組み合わせを使用して問題を解決することでしたが、それを解決する方法がわかりません

4

2 に答える 2

6
ifstream input("somefile")

if (!input) { /* Handle error */ }

//MyDataType needs to implement an operator>>

std::vector<MyDataType> res;

std::istream_iterator<MyDataType> first(input);
std::istream_iterator<MyDataType> last;
std::copy(first,last, std::back_inserter(res));

//etc..

入力演算子は次のようになります。

std::istream& operator>>(std::istream &in,MyDataType & out)
{
    std::string str;
    std::getline(in,str);
    //Do something with str without using loops
    return in;
}

ここにはたくさんのループがあります ( を使いgotoたくないでしょう?) が、それらはすべて背後に隠れてstd::copyおり、std::getline

于 2013-04-05T17:05:50.127 に答える