Zahlen aus einer Datei lesen und summieren

C++C++Beginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir lernen, wie man Zahlen aus einer Datei liest und dann Zeile für Zeile summiert, die Ergebnisse in eine andere Datei ausgibt. Indem Sie den Schritten in diesem Tutorial folgen, lernen Sie, wie man ein C++-Programm schreibt, das:


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp(("C++")) -.-> cpp/ControlFlowGroup(["Control Flow"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/StandardLibraryGroup(["Standard Library"]) cpp/BasicsGroup -.-> cpp/strings("Strings") cpp/ControlFlowGroup -.-> cpp/while_loop("While Loop") cpp/IOandFileHandlingGroup -.-> cpp/output("Output") cpp/IOandFileHandlingGroup -.-> cpp/user_input("User Input") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/StandardLibraryGroup -.-> cpp/string_manipulation("String Manipulation") cpp/StandardLibraryGroup -.-> cpp/standard_containers("Standard Containers") subgraph Lab Skills cpp/strings -.-> lab-96163{{"Zahlen aus einer Datei lesen und summieren"}} cpp/while_loop -.-> lab-96163{{"Zahlen aus einer Datei lesen und summieren"}} cpp/output -.-> lab-96163{{"Zahlen aus einer Datei lesen und summieren"}} cpp/user_input -.-> lab-96163{{"Zahlen aus einer Datei lesen und summieren"}} cpp/files -.-> lab-96163{{"Zahlen aus einer Datei lesen und summieren"}} cpp/string_manipulation -.-> lab-96163{{"Zahlen aus einer Datei lesen und summieren"}} cpp/standard_containers -.-> lab-96163{{"Zahlen aus einer Datei lesen und summieren"}} end

Erstellen einer neuen C++-Datei

Erstellen Sie in das Verzeichnis ~/project eine neue Datei mit dem Namen file_sum.cpp.

touch ~/project/file_sum.cpp

Enthalten Sie notwendige Bibliotheken

Um in C++ mit Dateien zu arbeiten, müssen wir in unserem Programm die Bibliotheken <iostream> und <fstream> einbinden. Fügen Sie den folgenden Code in Ihre Datei file_sum.cpp ein:

#include <iostream>
#include <fstream>

using namespace std;

Fordern Sie den Benutzer nach dem Dateinamen auf

Wir werden den Benutzer nach dem Dateinamen fragen. Fügen Sie den folgenden Code in Ihre Datei file_sum.cpp ein:

int main()
{
    char fileName[50];
    cout << "Enter file name: ";
    cin.getline(fileName, 50);
    ifstream inFile(fileName);
    ofstream outFile("sum.txt");
    string line;
}

Hier deklarieren wir ein Zeichenarray fileName, um den Dateinamen zu speichern, den der Benutzer eingeben wird. Anschließend fordern wir den Benutzer auf, den Dateinamen einzugeben, und speichern ihn im Array fileName. Schließlich erstellen wir ein ifstream-Objekt, um die Eingabedatei inFile zu öffnen, und ein ofstream-Objekt, um die Ausgabedatei outFile zu erstellen. Wir deklarieren auch die Zeichenfolge line, die verwendet werden wird, um jede Zeile der Eingabedatei zu speichern.

Lesen Sie die Datei und summieren Sie die Zahlen

Wir werden nun den Code schreiben, um die Datei zu lesen und die Zahlen in jeder Zeile zu summieren. Für jede Zeile in der Datei werden wir die Zahlen mit einem stringstream-Objekt lesen, sie summieren und die Summe in die Ausgabedatei schreiben. Fügen Sie den folgenden Code in Ihre Datei file_sum.cpp ein:

while (getline(inFile, line))
{
    int sum = 0;
    stringstream ss(line);
    int num;
    while (ss >> num)
    {
        sum += num;
    }
    outFile << sum << endl;
}

Hier verwenden wir eine while-Schleife, um jede Zeile der Eingabedatei zu lesen und die Zeile in der Zeichenfolge line zu speichern. Anschließend initialisieren wir die Variable sum mit 0, erstellen ein stringstream-Objekt namens ss, das die Inhalte jeder Zeile enthält. Dann extrahieren wir jede Zahl aus dem stringstream in num und erhöhen die Variable sum um jede Zahl. Nachdem alle Zahlen in der Zeile verarbeitet wurden, schreiben wir sum in die Ausgabedatei outFile.

Schließen Sie die Dateien und informieren Sie den Benutzer

Schließlich müssen wir die Eingabe- und Ausgabedateien schließen und den Benutzer darüber informieren, dass die Datei verarbeitet wurde. Fügen Sie den folgenden Code in Ihre Datei file_sum.cpp ein:

inFile.close();
outFile.close();
cout << "File processed successfully." << endl;
return 0;

Kompilieren und Ausführen des Codes

Kompilieren Sie den Code in file_sum.cpp mit dem folgenden Befehl:

g++ file_sum.cpp -o file_sum

Führen Sie den Code mit dem folgenden Befehl in der Konsole aus:

./file_sum

Sie werden dazu aufgefordert, den Dateinamen einzugeben, den Sie verarbeiten möchten. Geben Sie den Namen ein und drücken Sie die Eingabetaste. Das Programm wird die Datei lesen, die Zahlen Zeile für Zeile summieren und das Ergebnis in eine neue Datei namens sum.txt schreiben.

Vollständiger Code

Hier ist der vollständige Code der Datei file_sum.cpp:

#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

int main()
{
    char fileName[50];
    cout << "Enter file name: ";
    cin.getline(fileName, 50);
    ifstream inFile(fileName);
    if (!inFile)
    {
        cerr << "Unable to open file" << endl;
        return -1;
    }
    ofstream outFile("sum.txt");
    string line;

    while (getline(inFile, line))
    {
        int sum = 0;
        stringstream ss(line);
        int num;
        while (ss >> num)
        {
            sum += num;
        }
        outFile << sum << endl;
    }

    inFile.close();
    outFile.close();
    cout << "File processed successfully." << endl;
    return 0;
}

Zusammenfassung

In diesem Lab haben wir gelernt, wie man eine Datei liest, die darin enthaltenen Zahlen Zeile für Zeile summiert und das Ergebnis in eine andere Datei schreibt, indem man die C++-Standardbibliotheken <iostream> und <fstream> sowie die Klasse stringstream verwendet. Jetzt sollten Sie in der Lage sein, Dateien zu verarbeiten und viele der grundlegenden Dateioperationen in Ihren C++-Programmen zu verwenden.