feature image - https://source.unsplash.com/random/900×600/?background&sig=b12dd63e-1358-445b-9210-6d270bb8aca1

Caricamento dei dati catastali da file in C++

Scrivere un programma C++ che consenta di caricare l’elenco dei codici catastali dei comuni italiani è reperibile da numerosi repository su github. Puoi trovare la copia nel replit di questo codice. Ogni comune è descritto in una riga del file dove sono presenti nome del comune, provincia e codice catastale.

Ad esempio

A001,PD,"ABANO TERME"

Il programma che fa la lettura definirà una struct Comune contenente le tre stringhe per i tre campi che formano la riga. Il parsing avverrà riga per riga ed ogni stringa verràa passata ad una funzione che si occuperà di creare l’ oggetto di tipo Comune relativo al comune corrente, utilizzanto di metodi substr find e erase.

Il codice che fa la lettura sarà quindi il seguente:

#include <iostream>
#include <string>
#include <vector>
#include <fstream>

struct Comune {
std::string codice;
std::string provincia;
std::string nome;
};

Comune str_to_comune(const std::string&s) {
Comune c;
c.codice = s.substr(0,4);
c.provincia = s.substr(5,2);
c.nome = s.substr(8);
auto pos_doppio_apice = c.nome.find("\"");

if (pos_doppio_apice != std::string::npos) {
c.nome.erase(0,1);
c.nome.erase(c.nome.size()-1,1);
}
return c;
}

using CodiciCatastali = std::vector<Comune>;

int main() {
CodiciCatastali codici_catastali;
Comune c;
std::string s{"A007,OR,ABBASANTA"};

std::ifstream in{"comuni.txt"};

for (std::string line; std::getline(in, line); ) {
std::cout << line << "\n";
}

c = str_to_comune(s);

codici_catastali.push_back(c);

std::cout << c.codice << " "<< c.provincia << " " << c.nome;
std::cout << "\nbye.\n";
}

Andrea Pollini

Matematico, informatico.

Appunti di teoria

Raccolte Esercizi

Altri Esercizi