Ragazzi sto uscendo un po pazzo per questa cosa, nella parte di programma io trasformo in hash la domanda generata, poi controllo la sua presenza in un file txt, se non ci sta viene aggiunta e di conseguenza mi viene copiata nel db usando un wrapper di sqlite.
Il fatto è che anche se esiste l hash nel txt mi procede con la copia della domanda nel db.
qui non ho aggiunto tutta la parte della funzione per generare la domandache avete gia visto ma l ho fatta piu semplice (mettendo parole a caso), pero il problema sta sempre nella zona della verifica dell hash nel txt. come posso dire a quell " if " di non procedere con la copia nel db?
#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
#include <cstdlib>
#include <ctime>
#include <sqlite_modern_cpp.h>
#include <unordered_set>
#include "md5.h"
using namespace sqlite;
using namespace std;
int main()
{
fstream file("test.txt");
string line;
string quest1="ciao";
string congiunzione="come";
string posi="stai";
string puntoesc="tutto";
unordered_set<string> res;
while(file>>line) //INIZIO CONTROLLO HASH IN TXT
{
res.insert(line);
}
do
{
string hash;
hash = md5(quest1 + congiunzione + posi + puntoesc);
cout << hash << endl;
if (res.find(hash) != res.end())
cout << " exist." << endl;
else
cout << "not exists, copying..." <<endl;
std::ofstream outfile; //INIZIO COPIA HASH NEL TXT
outfile.open("test.txt", std::ios_base::app);
outfile << hash << '\n'; //FINE COPIA HASH NEL TXT
// INIZIO CHIAMATA DB
try {
database db("Domande.db");
db << u"insert into Corrette (QUEST1,CONGIUNZIONE,AGGETTIVO,PUNTOESC) values (?,?,?,?);"
<< quest1
<< congiunzione
<< posi
<< puntoesc;
cout << "OK id= " << db.last_insert_rowid() << endl;
}
catch (exception& e) {
cout << e.what() << endl;
}
//FINE CHIAMATA DB
break;
} while (true); //FINE CONTROLLO HASH IN TXT
}