Как проверить существование строки в файле

Пишу программу для генерации паролей. Все работает кроме одного цикла, который проверяет сгенерированную строку на существование такой же строки в фале(чтобы не было повторений). Все никак не могу додуматься как сделать эту проверку.

#include <Windows.h>
#include <fstream>
#include <iostream>
#include <string>


char buff[52] = {'A','a','B','b','C','c','D','d','E','e','F','f','G','g','H','h','I','i','J','j','K','k','L','l','M','m','N','n','O','o','P','p','Q','q','R','r','S','s','T','t','U','u','V','v','W','w','X','x','Y','y','Z','z' };
void BruteForce(int count) {

    int count_line = 0;
    bool prof = true;
    int povtor = 0;
    std::string str;
    std::string strInput;
    std::ifstream inf("pass.txt");
    std::ofstream fout("pass.txt");
    for (;;) {
        
        
        for (int i = 0; i < count; i++) {
            str += buff[rand() % 52 + 0];       
        }
       

        
       getline(inf, strInput);
        for (int i = 0; i < count_line; i++) { // проверка на существование уже такой записи
            if (str == strInput) {
                prof = false; 
                povtor++;
                break;
                
            }            
            
            
        }

        if (prof == true) {           
            fout << str << std::endl;
            count_line++;
            
            
            }
        else{

            continue;
            
       }
       prof = true;
       
       
        
        std::cout << "Слово записано: " << str << "\nКол-во слов: " << count_line << "\nКол-во повторившихся: " << povtor << "\n";
        str.clear();
       system("cls");
        
        if (GetAsyncKeyState(VK_F1)) {
            fout.close();
            inf.close();
            break;
        }

    }

    
}

int main()
{
    
    srand(time(0));
    setlocale(LC_ALL, "RUS");
    BruteForce(10);
}




Ответы (1 шт):

Автор решения: a_nR1085__i

Попробуйте так:

while(getline(inf, strInput)) { //читать строки в файле пока они не закончатся
        if (strInput == str) {
            //строка совпала
            prof = false; 
            povtor++;
            break;
        }
    }

Также есть пару вопросов к коду:

  1. Почему вы пишите, что слово записано
std::cout << "Слово записано: " << str << "\nКол-во слов: " << count_line << "\nКол-во повторившихся: " << povtor << "\n";

если оно может оказаться повтором и не записаться?

  1. Вы 2 раза увеличиваете переменную povtor на одном повторе.
  2. В начале count_line = 0, хотя в файле могут быть строки до записи.
→ Ссылка