17/12/10 10:46
lorenzo
Mah...dovrei vedere il codice intero per poterti dire qualcosa di più.
Comunque, "quando" hai l'errore? Quando tenti un secondo inserimento? Quando riutilizzi il vettore?
Comunque, "quando" hai l'errore? Quando tenti un secondo inserimento? Quando riutilizzi il vettore?
aaa
17/12/10 11:01
l'errore si verifica nel momento in cui esco dalla funzione di inserimento nel vettore ed effettuo dei controlli sullo stesso, errore che come ho scritto sopra si verifica solo se le tabelle hash sono più di una....
il pezzo di codice della funzione in cui avviene il push_back è questo:
dove :
Files è di tipo Vector<TabellaHash<string>>
il pezzo di codice della funzione in cui avviene il push_back è questo:
void functionAdd() { WIN32_FIND_DATA FindFileData; HANDLE hFind = INVALID_HANDLE_VALUE; char DirSpec[MAX_PATH]; // directory specification do { cout << "Inserisci un Path valido: "; cin >> DirSpec; strcat_s(DirSpec, "\*"); hFind = FindFirstFile(DirSpec, &FindFileData); }while(hFind == INVALID_HANDLE_VALUE); do { // If this filename is NOT a directory if( !(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) { char dir2[MAX_PATH]; for(int i = 0; i < MAX_PATH; i++) { dir2[i] = DirSpec[i]; if(dir2[i] == '*') dir2[i] = '\'; } strcat_s(dir2, FindFileData.cFileName); ifstream is(dir2, ios::in); if (!is.good()) cout << "Errore in apertura di: " << FindFileData.cFileName << endl; //controllo apertura file else { tabs t = leggiFile(is, FindFileData); if(t.getNel()) Files.push_back(t); } is.close();//chiudi il collegamento al file }//si sposta al file successivo all'interno della stessa directory } while( FindNextFile(hFind, &FindFileData) ); FindClose(hFind);//interrompe l'Handle al file... } tabs leggiFile(istream & is, WIN32_FIND_DATA FindFileData) { tabs tab; tab.setNomeFile(FindFileData.cFileName); string s; int n = 0;//controlla se sono state inserite parole o meno... while(getline(is, s, '\n')) {//acquisisci fino alla fine della riga Tokenizer st(s); string token; while((token = st.next()) != "")tab.ins(token); s.clear();//svuota la stringa s } AddEffect++;//segna quante add sono state effettuate return tab; }
dove :
Files è di tipo Vector<TabellaHash<string>>
Ultima modifica effettuata da 17/12/10 20:07