|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6624
|
[C++] Banale problema Vector
Ciao ragazzi,
sto usando un vector di string per acquisire le righe di un file. Ora,questo file ha 39370 righe. Solo che, una volta pienato il vector, la size() me ne conta una in più! Questo è il codice(solo le parti rilevanti): Codice:
vector<string> vettore_stringhe;
int example =1;
while(!dati_ascii.eof())
{
cout << " Esempio : " << example << endl;
getline (dati_ascii,line);
vettore_stringhe.push_back(line);
line.clear();
example++;
}
cout << "size " <<vettore_stringhe.size()<< endl;
Poi un altro dubbio: che differenza c'è tra line.clear() e line.erase() ? Thanks Ultima modifica di Unrue : 10-01-2008 alle 10:48. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6624
|
Basta cambiare il while : Codice:
while(getline (dati_ascii,line)) Però permane il mio secondo dubbio. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
erase in teoria è una funzione un po' più complessa perché gli si può passare l'intervallo di caratteri da eliminare.
erase inoltre viene mantenuta per compatibilità con la nomenclatura degli altri contenitori standard. clear suppongo che al suo interno sia solo una chiamata ad erase |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Se volevi mantenere, per un qualsiasi motivo l'altro ciclo, ti bastava fare:
Codice:
while(!dati_ascii.eof())
{
cout << " Esempio : " << example << endl;
getline (dati_ascii,line);
if(!dati_ascii.eof())
{
vettore_stringhe.push_back(line);
line.clear();
example++;
}
}
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6624
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:53.




















