Не совсем понятно, что вы пытаетесь сделать, но условие в while
никогда не будет выполнено, если обычное char
не подписано.(Обычно это не так, поэтому вам может это сойти с рук.) Кроме того, вы не извлекаете конец строки в цикле, так что вы, вероятно, увидите его вместо EOF
и будете проходить слишком часто впетля.Я написал бы это по-другому:
bool
in1( std::string const& target )
{
std::ifstream in( "optab1.txt" );
if ( ! in.is_open() )
// Some sort of error handling, maybe an exception.
std::string line;
while ( std::getline( in, line )
&& ( line.size() < target.size()
|| ! std::equal( target.begin(), target.end(), line.begin() ) ) )
;
return in;
}
Обратите внимание на проверку того, что открытие прошло успешно.Одна из возможных причин, по которой вы всегда возвращаете false, заключается в том, что вы не открываете файл успешно.(Но мы не можем знать, если вы не проверите статус после открытия.)