Если я правильно вас понял, вы можете переместить тело цикла за пределы самого цикла.
Например (я использую строковый поток вместо файла)
#include <iostream>
#include <string>
#include <sstream>
int main()
{
std::string s( "Hello Imre_talpa\nBye Imre_talpa\n" );
std::istringstream is( s );
bool found = false;
std::string line;
while ( ( found = ( bool )std::getline( is, line ) ) and ( line.find( "Bye" ) == std::string::npos ) );
if ( found )
{
std::cout << "\nToken already exists" << '\n';
}
else
{
std::cout <<"\nHere we're saving the input" << '\n';
}
}
Вывод программы:
Token already exists
Если вы замените строку «Bye» на любую другую строку, которой нет в потоке строки (файл в вашем случае), тогда вывод будет
Here we're saving the input
Вместо вывода фразы вы должны вставить свой вызов функции.