C++ Lettura Da File Riga Per Riga

Ciao amico/a programmatore/trice! Oggi parliamo di qualcosa di super utile ma che a volte sembra un po' intimidatorio: leggere dati da un file in C++, riga per riga. Tranquillo/a, non è niente di complicato, è più come preparare una ricetta, solo che invece di ingredienti, usi righe di testo! 😉

Immagina di avere un file di testo, magari un elenco di nomi, o delle istruzioni per il tuo programma. Come fai a far leggere queste cose al tuo adorato C++? Beh, C++ ha uno strumento magico chiamato fstream, che sta per "file stream". È come una porta attraverso cui il tuo programma può parlare con i file. E noi, vogliamo che parliamo, riga per riga, eh sì!

Allora, per prima cosa, dobbiamo includere la libreria giusta. È facile, basta mettere all'inizio del tuo codice:

#include <fstream>

Ecco fatto! Come mettere il grembiule prima di iniziare a cucinare. Poi, ci serve un oggetto per rappresentare il nostro file. Solitamente usiamo un oggetto di tipo ifstream, che sta per "input file stream", ovvero il flusso che entra nel nostro programma dal file. Diciamo che è il nostro "lettore di file personale".

Creiamolo così:

C++ #9 Scrittura e Lettura da File – Arduino Facile
C++ #9 Scrittura e Lettura da File – Arduino Facile
std::ifstream mioFile;

Ora, dobbiamo dire a questo nostro lettore quale file leggere. È come dirgli "Ok, lettore, questo è il tuo libro!". Si fa con il metodo open():

mioFile.open("il_mio_file.txt");

Ovviamente, devi sostituire "il_mio_file.txt" con il nome effettivo del tuo file. Se il file è nella stessa cartella del tuo programma, basta il nome. Altrimenti, dovrai mettere il percorso completo, tipo "C:/cartella/sottocartella/il_mio_file.txt". Un po' come dare l'indirizzo completo a un amico che deve venire a trovarti.

(DAD 3) File C++ lettura - YouTube
(DAD 3) File C++ lettura - YouTube

Ma aspetta un attimo! E se il file non esiste? O se il nostro programma non ha i permessi per leggerlo? Il nostro lettore potrebbe andare in panico! Dobbiamo controllare che l'apertura sia andata a buon fine. Si fa con un semplice if:

if (mioFile.is_open()) {
    // Qui mettiamo tutto il codice per leggere!
} else {
    std::cout << "Errore nell'apertura del file!" << std::endl;
}

Visto? È importante essere previdenti, anche in programmazione. Non vogliamo che il nostro programma si lamenti come un bambino a cui è sparito il gelato, no?

FILE CSV - Schemi e Modalità di Lettura/Scrittura - Studocu
FILE CSV - Schemi e Modalità di Lettura/Scrittura - Studocu

Ora arriva il bello: leggere riga per riga! Per questo, abbiamo un amico fidato: la funzione getline(). È facilissima da usare. Diciamo che è come un piccolo aspirapolvere che succhia una riga alla volta dal file e ce la mette in una variabile. Ecco come funziona:

Avrai bisogno di una variabile di tipo std::string per contenere la riga letta. Chiamiamola linea, perché... beh, è una linea!

PPT - I File di testo in Pascal PowerPoint Presentation, free download
PPT - I File di testo in Pascal PowerPoint Presentation, free download
std::string linea;
while (std::getline(mioFile, linea)) {
    // Adesso la variabile 'linea' contiene una riga del file!
    // Possiamo fare quello che vogliamo con essa!
    std::cout << "Ho letto: " << linea << std::endl;
}

Il ciclo while (std::getline(mioFile, linea)) continuerà a leggere righe finché non raggiunge la fine del file. Quando non ci sono più righe da leggere, getline() restituisce un valore "falso" e il ciclo si ferma. Magico, vero?

Alla fine, quando abbiamo finito di leggere (o anche se c'è stato un errore), è buona educazione chiudere il file. È come dire "Grazie mille, lettore, per il tuo lavoro!". Lo facciamo con il metodo close():

mioFile.close();

E il gioco è fatto! Hai appena imparato a far leggere a C++ i tuoi file, riga per riga. Non è così difficile, vero? È tutta una questione di prendersi un po' di tempo, capire gli strumenti e poi, con un po' di pratica, diventa un gioco da ragazzi. E ora, vai e fai leggere ai tuoi programmi tutti i file del mondo! Hai il potere di trasformare dati grezzi in informazioni preziose. Sorridi, sei un/a programmatore/trice fantastico/a!