ファイルを特定の行まで読みたいんですけど,どうも上手くいきません.
どうすれば良いんでしょうか.
istream_iteratorの使い方がおかしいのかな?

std::vector<std::string> text;
std::ifstream ifs("data.txt");
if(!ifs)
  std::exit(EXIT_FAILURE);
std::istream_iterator<std::string> it1(ifs), it2, eof;
it2 = std::find(it1, eof, "山田\n");
std::copy(it1, it2, std::back_inserter(text));
std::copy(text.begin(), text.end(), std::ostream_iterator<std::string>(std::cout));

data.txt
小林
田中
山田
大村