Læsning og skrivning af CSV-filer
Fortolk CSV-filer linje for linje, og skriv resultaterne tilbage til disken
Læsning og skrivning af CSV-filer er en gratis C++ Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i C++ Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C++ Academy-kurset indeholder 4 lektioner i alt.
Hvad er CSV?
CSV (Comma-Separated Values) er et tabelformat i ren tekst. Hver linje er en række, og kommaer adskiller kolonner. Det er enkelt, men fyldt med specialtilfælde.
Nødvendige headerfiler
Brug fstream til filer og sstream til fortolkning.
#include <fstream>
#include <sstream>
#include <string>
#include <vector>Åbn en fil til læsning
Konstruér en std::ifstream med filstien. Kontrollér, at den blev åbnet.
std::ifstream file("data.csv");
if (!file) {
std::cerr << "Cannot open file\n";
return 1;
}Læsning linje for linje
Brug std::getline til at gennemløbe rækkerne.
std::string line;
while (std::getline(file, line)) {
process(line);
}Opdeling af en række
Brug en stringstream og getline med et skilletegn til at opdele hver række i felter.
std::vector<std::string> split(const std::string& line) {
std::vector<std::string> fields;
std::stringstream ss(line);
std::string field;
while (std::getline(ss, field, ',')) {
fields.push_back(field);
}
return fields;
}Spring headeren over
Læs og kassér den første linje, hvis den indeholder kolonnenavne.
std::string header;
std::getline(file, header); // discardFortolkning af felter med typer
Konvertér strengfelter til værdier med typer med std::stoi eller std::stod.
auto fields = split(line);
int id = std::stoi(fields[0]);
double price = std::stod(fields[2]);Skrivning af CSV
Brug std::ofstream til at skrive. Skriv værdier til streamen med <<, og tilføj kommaer og linjeskift.
std::ofstream out("results.csv");
out << "name,score\n";
out << "Ada,95\n";
out << "Bob,82\n";Citationstegn omkring felter med kommaer
Hvis et felt indeholder et komma, skal du omslutte det med dobbelte anførselstegn. Hvis du vil medtage et anførselstegn i feltet, skal du fordoble det.
std::string escape(const std::string& s) {
if (s.find_first_of(",\"\n") == std::string::npos) return s;
std::string r = "\"";
for (char c : s) {
if (c == '"') r += '"';
r += c;
}
return r + "\"";
}Håndtering af linjeskift i felter
Felter i anførselstegn kan strække sig over flere fysiske linjer. En robust CSV-læser holder styr på anførselstegnens tilstand på tværs af kald til getline. I enkle tilfælde bør du holde dig til felter uden flere linjer.
Lukning af filen
Filstreams lukkes automatisk, når de destrueres (RAII). Du kan lukke eksplicit med file.close() — det er kun nødvendigt, hvis du vil genbruge streamen.
Hvornår skal du bruge et bibliotek?
Til komplekse CSV-filer (kommaer i anførselstegn, værdier over flere linjer, tegnkodning) bør du bruge et bibliotek som rapidcsv eller csv-parser. Skriv kun selv en løsning til enkle, kontrollerede formater.
Hurtigt tjek
Hvilken teknik opdeler en linje ved kommaer udelukkende ved hjælp af standardbiblioteket?
Opsummering
Læs CSV med std::ifstream + std::getline, opdel rækker med en stringstream og et kommaseparerende skilletegn, og fortolk felter med typer med std::stoi/stod. Brug et rigtigt bibliotek til komplekse CSV-filer.
Lær C++ med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 51
- Lektioner
- 203
Ofte stillede spørgsmål
Er lektionen “Læsning og skrivning af CSV-filer” gratis?
Ja — alle 3 lektioner i læringssporet C++ Academy, inklusive “Læsning og skrivning af CSV-filer”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. C++ Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Læsning og skrivning af CSV-filer”?
Fortolk CSV-filer linje for linje, og skriv resultaterne tilbage til disken Du øver dig i C++ Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på C++ Academy?
Der kræves ingen tidligere erfaring. C++ Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Læsning og skrivning af CSV-filer”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne C++ Academy-lektion?
Ja. Alle C++ Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Bygning af en simpel beregner som CLI
- Læsning og skrivning af CSV-filer
- Et talgættespil
- En tæller for ordfrekvens