Ciao ragazzi ho un problema col questo programma, praticamente da come leggete nel codice mi da l md5 delle parole inserite da me e poi me lo copia nel txt, il problema è che qui ho fatto un test, volevo vedere se mi inseriva l' MD5 della prima frase (ciao come stai amico) nel txt e lo fa.
poi a seguire ho scritto due volte la stessa frase (come va la vita) per capire se me la copiasse anche se duplicata (cosa che non deve fare).
Al
primo avvio del programma mi fa passare tutte e 3 le frasi! (l ultima non avrebbe dovuto farla passare in quanto duplicata)
Al
secondo avvio del programma invece mi funziona e mi dice che tutte e 3 esistono gia come frasi.
come risolvo il problema? io voglio che mi controlla durante l esecuzione del programma se ci son duplicati e non all esecuzione successiva..
Qui il sorgente:
#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="amico";
string quest2="come";
string congiunzione2="va";
string posi2="la";
string puntoesc2="vita";
unordered_set<string> res;
int a = 0;
while(a==0){
while(file>>line)
{
res.insert(line);
}
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;
outfile.open("test.txt", std::ios_base::app);
outfile << hash << '\n';
}
hash = md5(quest2 + congiunzione2 + posi2 + puntoesc2);
cout << hash << endl;
if (res.find(hash) != res.end())
cout << " exist." << endl;
else{
cout << "not exists, copying..." <<endl;
std::ofstream outfile;
outfile.open("test.txt", std::ios_base::app);
outfile << hash << '\n';
}
hash = md5(quest2 + congiunzione2 + posi2 + puntoesc2);
cout << hash << endl;
if (res.find(hash) != res.end())
cout << " exist." << endl;
else{
cout << "not exists, copying..." <<endl;
std::ofstream outfile;
outfile.open("test.txt", std::ios_base::app);
outfile << hash << '\n'; }
cin >> a;
}
}
Qui gli output in console (1 avvio e 2 avvio):
~/S/cartella ??? ./checking
f07e7c7236c115a4e4858cb66a1c0650
not exists, copying...
7422b651766f19b6b62b7a1af85ca9df
not exists, copying...
7422b651766f19b6b62b7a1af85ca9df
not exists, copying...
~/S/cartella ??? ./checking
f07e7c7236c115a4e4858cb66a1c0650
exist.
7422b651766f19b6b62b7a1af85ca9df
exist.
7422b651766f19b6b62b7a1af85ca9df
exist.