Leggere file con ifstream
Leggere testo e dati
Leggere file con ifstream è una lezione C++ Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C++ Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C++ Academy include 4 lezioni in totale.
Che cos'è ifstream?
std::ifstream (stream di input da file) legge i dati dai file. Si comporta come std::cin, ma la sua origine è un file sul disco.
- È definito in
<fstream>. - Apre un file in base al nome specificato nel costruttore.
#include <iostream>
#include <fstream>
int main() {
std::ofstream("demo.txt") << "hello\n";
std::ifstream in("demo.txt");
std::string word;
in >> word;
std::cout << word << '\n';
return 0;
}Apertura di un file
Costruisca un ifstream con il nome del file, quindi verifichi con is_open() se il file è stato trovato.
#include <iostream>
#include <fstream>
int main() {
std::ofstream("data.txt") << "42\n";
std::ifstream in("data.txt");
std::cout << (in.is_open() ? "opened" : "failed") << '\n';
return 0;
}Lettura delle parole
L'operatore >> legge token separati da spazi bianchi, proprio come con cin.
#include <iostream>
#include <fstream>
int main() {
std::ofstream("words.txt") << "alpha beta gamma\n";
std::ifstream in("words.txt");
std::string w;
while (in >> w) std::cout << w << '\n';
return 0;
}Lettura dei numeri
Può estrarre direttamente i tipi numerici. L'estrazione dallo stream analizza il testo e lo converte nel tipo corretto.
#include <iostream>
#include <fstream>
int main() {
std::ofstream("nums.txt") << "10 20 30\n";
std::ifstream in("nums.txt");
int sum = 0, x;
while (in >> x) sum += x;
std::cout << "sum = " << sum << '\n';
return 0;
}Lettura delle righe con getline
Usi std::getline() per leggere un'intera riga, inclusi gli spazi, fino al carattere di nuova riga.
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::ofstream("lines.txt") << "first line\nsecond line\n";
std::ifstream in("lines.txt");
std::string line;
while (std::getline(in, line)) std::cout << "[" << line << "]\n";
return 0;
}Lettura dell'intero file
Per caricare interamente un file, lo legga in una stringa usando gli iteratori del buffer dello stream.
#include <iostream>
#include <fstream>
#include <sstream>
int main() {
std::ofstream("all.txt") << "line1\nline2\n";
std::ifstream in("all.txt");
std::stringstream ss;
ss << in.rdbuf();
std::cout << ss.str();
return 0;
}Rilevamento della fine del file
Un ciclo di lettura termina quando l'estrazione non riesce, in genere alla fine del file. Testare lo stream in una condizione permette di rilevare questa situazione.
#include <iostream>
#include <fstream>
int main() {
std::ofstream("eof.txt") << "1 2 3\n";
std::ifstream in("eof.txt");
int x, count = 0;
while (in >> x) ++count;
std::cout << "read " << count << " numbers\n";
std::cout << "eof: " << std::boolalpha << in.eof() << '\n';
return 0;
}Gestione di un file mancante
Se il file non esiste, lo stream si trova in uno stato di errore e is_open() restituisce false. Verifichi sempre lo stato prima di leggere.
#include <iostream>
#include <fstream>
int main() {
std::ifstream in("does_not_exist_12345.txt");
if (!in) {
std::cout << "could not open file\n";
}
return 0;
}Analisi delle righe strutturate
Combini getline con istringstream per estrarre i campi da ogni riga.
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
int main() {
std::ofstream("people.txt") << "Alice 30\nBob 25\n";
std::ifstream in("people.txt");
std::string line;
while (std::getline(in, line)) {
std::istringstream ss(line);
std::string name; int age;
ss >> name >> age;
std::cout << name << " is " << age << '\n';
}
return 0;
}Apertura e chiusura esplicite
Può aprire in un secondo momento uno stream costruito con il costruttore predefinito usando open() e rilasciarlo con close().
#include <iostream>
#include <fstream>
int main() {
std::ofstream("oc.txt") << "data\n";
std::ifstream in;
in.open("oc.txt");
std::string s; in >> s;
in.close();
std::cout << s << '\n';
return 0;
}RAII chiude al posto Suo
Quando un ifstream esce dall'ambito, il suo distruttore chiude automaticamente il file. La chiamata manuale a close() è raramente necessaria.
#include <iostream>
#include <fstream>
int main() {
std::ofstream("raii.txt") << "x\n";
{
std::ifstream in("raii.txt");
std::string s; in >> s;
std::cout << s << '\n';
} // file closed here automatically
std::cout << "closed\n";
return 0;
}Verifica rapida
Verifichi la Sua comprensione della lettura delle righe.
Riepilogo
Ha imparato che std::ifstream:
- legge dai file usando
>>estd::getline - deve essere verificato con
is_open()oppure testando lo stream - si chiude automaticamente tramite RAII quando esce dall'ambito
Successivamente, scriverà file con ofstream.
Domande Frequenti
La lezione «Leggere file con ifstream» è gratuita?
Sì — il testo completo di «Leggere file con ifstream» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C++ Academy, passa a CoddyKit PRO. Il corso C++ Academy include 4 lezioni in totale.
Cosa imparerò in «Leggere file con ifstream»?
Leggere testo e dati Eserciti C++ Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C++ Academy?
Non è richiesta alcuna esperienza precedente. C++ Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Leggere file con ifstream»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C++ Academy?
Sì. Ogni lezione C++ Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Leggere file con ifstream
- Scrivere file con ofstream
- I/O di file binari
- Gestione degli errori e stato