Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lecture du contenu d'un fichier .txt

Lecture de chiffre à virgule provenant d'un fichier .txt

Sujet résolu
    5 juin 2023 à 2:59:28

    Bonjour

    Je cherche à lire en console, à l'aide de chevrons, les chiffres à virgules provenant d'un fichier .txt contenant le texte suivant :

    Bonjour, je suis une phrase ecrite dans un fichier.

    42.1337

    J'ai 36 ans.

    Théoriquement, en utilisant les deux programmes suivant je suis censé pouvoir afficher le "42.1337" :

    #include <iostream>
    #include <fstream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        ifstream monFlux("C:/Users/User/Documents/programme code blocks/programme en C++/modification_et_lecture_de_fichiers/scores.txt");  //Ouverture d'un fichier en lecture
        double nombre;
    
        if(monFlux)//vérifie si le fichier est ouvert avec succès
        {
            
            monFlux >> nombre; //Lit un nombre à virgule depuis le fichier
    
            
            cout << nombre << endl;//affiche le nombre à virgule lu
        }
        else
        {
            cout << "ERREUR: Impossible d'ouvrir le fichier en lecture." << endl;
        }
        return 0;
    }
    #include <iostream>
    #include <fstream>
    #include <string>
    
    using namespace std;
    
    //lire des nombres à virgule avec des chevrons
    int main()
    {
        ifstream monFlux("C:/Users/User/Documents/programme code blocks/programme en C++/modification_et_lecture_de_fichiers/scores.txt");  //Ouverture d'un fichier en lecture
        double nombre;
    
        if(monFlux.is_open())//vérifie si le fichier est ouvert avec succès
        {
            while (monFlux >> nombre)//lit chaque nombre du fichier
            {
                cout << nombre << endl;//affiche le nombre lu
            }
            monFlux.close();//ferme le fichier
        }
        else
        {
            cout << "ERREUR: Impossible d'ouvrir le fichier en lecture." << endl;
        }
        return 0;
    }
    

    Mais au lieu du résultat attendu, le premier programme m'affiche 0 et le deuxième ne m'affiche rien du tout. J'ai aussi essayé de remplacé le point par un virgule en écrivant directement dans le fichier .txt mais le résultat fut le même. Qu'est-ce qui ne va pas dans mes programmes pour qu'aucun chiffre à virgule ne s'affiche ?

    Cordialement





    -
    Edité par 1Stark 5 juin 2023 à 3:04:17

    • Partager sur Facebook
    • Partager sur Twitter
      5 juin 2023 à 10:23:56

      Quand tu lis un fichier ça le fait en commençant par le début. Or au début tu as des mots qui ne sont pas des nombres.
      Donc pour ce qui est de ton premier code ça lit le premier mot et comme ce n'est pas un nombre ça affecte 0 à la variable nombre.
      Et pour le second code comme ce n'est pas un nombre l'opération >> dans ton while renvoi nul on entre donc pas dans la boucle.

      Jacques Rouxel a écrit:

      En essayant continuellement on finit par réussir. Donc : plus ça rate, plus on a de chance que ça marche.

      -
      Edité par rouIoude 5 juin 2023 à 10:29:22

      • Partager sur Facebook
      • Partager sur Twitter
      ...
        5 juin 2023 à 23:28:39

        Bonsoir

        Merci. Pour le while, je pensais qu'il allait parcourir tout le fichier.  J'ai modifié le contenu de mon fichier en ajoutant au début "23.4" comme ceci :

        23.4

        Bonjour, je suis une phrase ecrite dans un fichier.

        42.1337

        J'ai 36 ans.

        Et la console a bien affiché 23.4.
        • Partager sur Facebook
        • Partager sur Twitter

        Lecture du contenu d'un fichier .txt

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown