Есть несколько проблем с вашим кодом. Тот, который вы видите, должен
к тому, что вы читаете новую строку из файла для каждого элемента в
v1
и сравните эту строку только с текущим элементом в v1
; вы
вероятно, хотите переместить getline
из внутреннего цикла, что-то
как:
std::string line;
while ( std::getline( file, line ) ) {
std::vector<std::string>::const_iterator pos
= std::find( v1.begin(), v1.end(), line );
if ( pos != v1.end() ) {
v2.push_back( line );
}
}
Это также решает вторую серьезную проблему: вы не проверяли, что
вызов getline
завершился успешно перед использованием его результатов.
(std::ios_base::good()
, вероятно, самая бесполезная функция в
стандарт. Я еще не нашел случай, когда звонил бы это
соответствующий.)