Как изменить это время для правильной работы? - PullRequest
1 голос
/ 24 мая 2019

У меня есть цикл while, который ищет слово в текстовом файле. Если он найден, я хочу напечатать сообщение. В противном случае я хочу сохранить ввод. Это только часть функции. Этот цикл сохраняет несколько раз, прежде чем найти слово.


while (getline(f, line)) 
{
    if (line.find(token) != string::npos)
    {
        cout <<"\nToken already exists"<< endl;
        break;
    }
    else
    {
        SaveUser();
    }
}

Цикл вызывает функцию SaveUser() до того, как слово найдено.

1 Ответ

1 голос
/ 24 мая 2019

Если я правильно вас понял, вы можете переместить тело цикла за пределы самого цикла.

Например (я использую строковый поток вместо файла)

#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

Вместо вывода фразы вы должны вставить свой вызов функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...