Lecture et addition de nombres à partir d'un fichier

C++C++Beginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons apprendre à lire des nombres à partir d'un fichier puis à les additionner ligne par ligne, en écrivant les résultats dans un autre fichier. En suivant les étapes de ce tutoriel, vous allez apprendre à écrire un programme C++ qui :


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{{"Lecture et addition de nombres à partir d'un fichier"}} cpp/while_loop -.-> lab-96163{{"Lecture et addition de nombres à partir d'un fichier"}} cpp/output -.-> lab-96163{{"Lecture et addition de nombres à partir d'un fichier"}} cpp/user_input -.-> lab-96163{{"Lecture et addition de nombres à partir d'un fichier"}} cpp/files -.-> lab-96163{{"Lecture et addition de nombres à partir d'un fichier"}} cpp/string_manipulation -.-> lab-96163{{"Lecture et addition de nombres à partir d'un fichier"}} cpp/standard_containers -.-> lab-96163{{"Lecture et addition de nombres à partir d'un fichier"}} end

Créez un nouveau fichier C++

Créez un nouveau fichier nommé file_sum.cpp dans le répertoire ~/project.

touch ~/project/file_sum.cpp

Incluez les bibliothèques nécessaires

Pour travailler avec des fichiers en C++, nous devons inclure les bibliothèques <iostream> et <fstream> dans notre programme. Ajoutez le code suivant à votre fichier file_sum.cpp :

#include <iostream>
#include <fstream>

using namespace std;

Demandez à l'utilisateur le nom du fichier

Nous allons demander à l'utilisateur le nom du fichier. Ajoutez le code suivant à votre fichier file_sum.cpp :

int main()
{
    char fileName[50];
    cout << "Entrez le nom du fichier : ";
    cin.getline(fileName, 50);
    ifstream inFile(fileName);
    ofstream outFile("sum.txt");
    string line;
}

Ici, nous déclarons un tableau de caractères fileName pour stocker le nom du fichier que l'utilisateur entrera. Nous demandons ensuite à l'utilisateur d'entrer le nom du fichier et le stockons dans le tableau fileName. Enfin, nous créons un objet ifstream pour ouvrir le fichier d'entrée inFile et un objet ofstream pour créer le fichier de sortie outFile. Nous déclarons également la chaîne line qui sera utilisée pour stocker chaque ligne du fichier d'entrée.

Lisez le fichier et calculez la somme des nombres

Nous allons maintenant écrire le code pour lire le fichier et additionner les nombres de chaque ligne. Pour chaque ligne du fichier, nous allons lire les nombres en utilisant un objet stringstream, les additionner et écrire la somme dans le fichier de sortie. Ajoutez le code suivant à votre fichier file_sum.cpp :

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

Ici, nous utilisons une boucle while pour lire chaque ligne du fichier d'entrée, en stockant la ligne dans la chaîne line. Nous initialisons ensuite la variable sum avec 0, créons un objet stringstream nommé ss qui contient le contenu de chaque ligne. Nous extrayons ensuite chaque nombre du stringstream dans num et incrémentons la variable sum avec chaque nombre. Après avoir traité tous les nombres de la ligne, nous écrivons sum dans le fichier de sortie outFile.

Fermez les fichiers et avisez l'utilisateur

Enfin, nous devons fermer les fichiers d'entrée et de sortie et informer l'utilisateur que le fichier a été traité. Ajoutez le code suivant à votre fichier file_sum.cpp :

inFile.close();
outFile.close();
cout << "Le fichier a été traité avec succès." << endl;
return 0;

Compilez et exécutez le code

Compilez le code file_sum.cpp à l'aide de la commande suivante :

g++ file_sum.cpp -o file_sum

Exécutez le code avec la commande suivante dans le terminal :

./file_sum

Vous serez invité à entrer le nom du fichier que vous souhaitez traiter. Entrez le nom et appuyez sur Entrée. Le programme lira le fichier, additionnera les nombres ligne par ligne et écrira les résultats dans un nouveau fichier nommé sum.txt.

Code complet

Voici le code complet du fichier file_sum.cpp :

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

using namespace std;

int main()
{
    char fileName[50];
    cout << "Entrez le nom du fichier : ";
    cin.getline(fileName, 50);
    ifstream inFile(fileName);
    if (!inFile)
    {
        cerr << "Impossible d'ouvrir le fichier" << 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 << "Le fichier a été traité avec succès." << endl;
    return 0;
}

Récapitulatif

Dans ce laboratoire, nous avons appris à lire un fichier, à additionner ses nombres ligne par ligne et à écrire les résultats dans un autre fichier en utilisant les bibliothèques standards C++ <iostream> et <fstream> et la classe stringstream. Maintenant, vous devriez être capable de manipuler des fichiers et d'utiliser de nombreuses opérations de base sur les fichiers dans vos programmes C++.