Quindi sto sperimentando con il tentativo di aggiungere il nome e il cognome in una doppia lista concatenata. Ho diversi file di testo di diverse lunghezze con il formato "stringa, stringa" e sto usando la lista> per memorizzare i miei dati.confusione su liste e coppie
Sto usando questo codice:
typedef std::list< std::pair<string,string> > listPair;
...
list<pair<string, string> > mylist;
ifstream myFile;
myFile.open("20.txt");
pair<string, string> stuff;
while (myFile >> stuff.first >> stuff.second)
{
mylist.push_back(stuff);
}
listPair::iterator iter = mylist.begin();
for(;iter != mylist.end();iter++)
{
string s = (*iter).first;
cout << s << endl;
string c = (*iter).second;
cout << c << endl;
}
ora il problema che sto avendo è che in primo luogo, non viene aggiunto l'ultimo elemento della lista. come ogni file manca la linea di fondo, quindi è un po 'di confusione.
inoltre, sto facendo un "mylist.size()" per garantire che tutti i nomi siano stati aggiunti, e mi confonde perché dire per un file di testo contenente 99 nomi, cioè 99 righe di testo, dirà (non dimenticando si legge solo in 98 a causa della mancanza dell'ultima riga) che la lista ha dimensione 48.
PERCHÉ 48? E 'qualcosa da fare perché ho fatto delle coppie, che comunque non avrebbero senso come se non stesse leggendo in coppia ci sarebbe in realtà il doppio di circa, dal momento che le coppie sono solo per prendere il nome e il cognome come un valore.
La mente mi dava fastidio.
ancora una volta grazie per tutto il vostro aiuto!
Forse stai cercando 'getline'? –
Proprio come una nota a margine, come contenitore per uso generico dovresti usare 'vector' piuttosto che' list'. Dal modo in cui lo stai usando, non vedo la necessità di un 'elenco' qui. –
Potresti aggiungere il file di input '20.txt' (o almeno un estratto)? Forse il tuo input non è formattato correttamente. – Zeta