Serializzazione e lettura di una map
#include <cstdlib>
#include <iostream>
#include <string>
#include <map>
#include <fstream>
#include <iterator>
#include <algorithm>
using namespace std;
int main()
{ map <string, int> temp;
map <string, int>::iterator i;
// Inizializzazione della map con coppie nome (chiave) ed età anagrafica
temp["Laura"] = 19; temp["Giorgio"] = 21; temp["Andrea"] = 20;
temp["Luigi"] = 25; temp["Anna"] = 24;
// Creazione e apertura del file dove memorizzare il contenuto della map
ofstream fElenco("Elenco");
if(!fElenco) {
cerr << "Errore di apertura del file" << endl;
return 1;
}
/* Serializzazione del container. Gli elementi sono copiati
nel file secondo l'ordine (crescente) delle loro chiavi */
for(i = temp.begin(); i != temp.end(); i++)
fElenco << i->first << '\t' << i->second << endl;
fElenco.close(); // chiusura del file
// Apertura in lettura del file che contiene i dati da inserire nella map
ifstream fPersone("Elenco");
if(!fPersone) {
cerr << "Errore di apertura del file" << endl;
return 1;
}
map <string, int> studenti;
string nome;
int eta;
do if(fPersone >> nome >> eta)
studenti[nome] = eta;
while(fPersone);
fPersone.close(); // chiusura del file
// Visualizzazione degli elementi del container map in ordine di chiave
for(i = studenti.begin(); i != studenti.end(); i++)
cout << i->first << '\t' << i->second << endl;
system("pause");
}
Serializzazione di un container map in un file
Utilizzo del contenitore standard map.