IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Récupérer les données d'un fichier texte


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut Récupérer les données d'un fichier texte
    Bonjour je voudrai récupérer la ligne d'un fichier texte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    #include <iostream> 
    #include <string> 
    #include <fstream> 
    #include "sierrachart.h" 
    #include <stdio.h> 
    #include <time.h> 
     
    using namespace std; 
    SCDLLName("Test"); 
    SCSFExport scsf_DTNS(SCStudyGraphRef sc) {  
     
    if(sc.SetDefaults){ 
         sc.GraphName="Test"; 
         sc.StudyDescription="Test"; 
         sc.FreeDLL = 1; 
       sc.GraphRegion = 0; 
                      }//Fin de la fonction Defaut// 
       ifstream Files("Z:\\SC_Graphique_rithmic\\Data\\Val.txt", ios::in);
       if(Files){ 
             //sc.AddMessageToLog("File Open.", 1); 
              string Lines; 
            while ( getline(Files, Lines) ) {  
    							std::stringstream ss(Lines);
    							int Data, Value;
    							std::string Data;
    			                if ( std::getline( ss, Data, ',') ) { Value = Data; } 
    			                else { Value = ""; }
                                            } 
                   Files.close(); 
             return; 
                 }//Right 
       else{ 
              sc.AddMessageToLog("File Not Open.", 1); 
          return; 
           }//Wrong 
     
                                             }//Fin de fonction//
    fichier Val.txt
    donné dedans une ligne : 1

    Comment faire ?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut J'ai reussi a ouvrir le fichier mais je ne recupère rien !!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    #include <iostream> 
    #include <string> 
    #include <fstream> 
    #include "sierrachart.h" 
    #include <stdio.h> 
    #include <time.h> 
    using namespace std;
    if main(){
       ifstream Files("Z:\\SC_Graphique_rithmic\\Data\\Val.txt", ios::in);//dans le fichier Val.txt il y a juste 1
       if(Files){ 
             //cout << "File Open." << end1;
                 int Val;
    			 string Value;
    			 Files >> Val >> Value;
    			 Files.close();
                }//bon 
       else{ 
              cout <<"File Not Open." << end1;
          return; 
           }//faux
    char Valeur(Value);//mise en mémoire de la valeur Value = 1
    cout << Valeur;//affichage pour vérifier si la valeur est en mémoire afin de la récupérer pour plus tard
    return 0;
               }//fin du main
    Mon problème c'est que je n'ai rien en mémoire. J'ai essayé avec un int double, string c'est idem.
    Je ne comprends plus rien, je vais prendre l'air un peu pour soulager le mal au crane.
    Si vous avez une astuce je suis preneur.

  3. #3
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 695
    Points : 2 434
    Points
    2 434
    Par défaut
    Bonjour.

    Tu déclares la variable string Value (ligne 14) dans un bloc local qui sera détruit à la fin. Quand tu cherches à accéder à cette variable en ligne 22, elle n'existe plus.
    Il faut bouger la déclaration de Value en dehors du bloc if/else.
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut cela ne fonctionne pas non plus
    C'est dingue cela ne fonctionne pas aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    #include <iostream> 
    #include <string> 
    #include <fstream> 
    #include "sierrachart.h" 
    #include <stdio.h> 
    #include <time.h> 
    using namespace std;
    if main(){
       ifstream Files("Z:\\SC_Graphique_rithmic\\Data\\Val.txt", ios::in);//dans le fichier Val.txt il y a juste 1
       if(Files){ 
             //cout << "File Open." << end1;
                 int Val;
    	     string Value;
                 char Valeur(Value);//mise en mémoire de la valeur Value = 1
                 cout << Valeur;//affichage pour vérifier si la valeur est en mémoire afin de la récupérer pour plus tard
    			 Files.close();
                }//bon 
       else{ 
              cout <<"File Not Open." << end1;
          return; 
           }//faux
    char MemValue(Valeur);//Ici on récupère la variable
    cout << MemValue;//affichage de la valeur en mémoire.
    return 0;
               }//fin du main

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut
    Je vais tout redémarrer en cas d' un bug

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    #include <iostream> 
    #include <string> 
    #include <fstream> 
    #include "sierrachart.h" 
    #include <stdio.h> 
    #include <time.h> 
    using namespace std;
    if main(){
       ifstream Files("Z:\\SC_Graphique_rithmic\\Data\\Val.txt", ios::in);//dans le fichier Val.txt il y a juste 1
       if(Files){ 
                 int Val(string Value);
                 cout << Val;//affichage pour vérifier si la valeur est en mémoire afin de la récupérer pour plus tard
    			 Files.close();
                }//bon 
       else{ 
              cout <<"File Not Open." << end1;
          return; 
           }//faux
    cout << Val;//affichage de la valeur en mémoire.
    return 0;
               }//fin du main
    Même avec ça, cela ne fonctionne pas aussi !!!
    Je ne sais plus quoi faire la !!!

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 963
    Points
    32 963
    Billets dans le blog
    4
    Par défaut
    Faudrait commencer par ne pas mettre des caractères et mot-clés au hasard dans le code, parce qu'un truc comme int Val(string Value); en plein milieu d'une fonction, ça devrait même pas compiler.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  8. #8
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 695
    Points : 2 434
    Points
    2 434
    Par défaut
    Citation Envoyé par carmen256 Voir le message
    int Val(string Value);
    Cette ligne ne fait pas ce que tu crois. Elle déclare une fonction Val qui renvoie un int et qui prend comme argument un string.
    Si tu veux déclarer une variable, prends l'habitude d'utiliser la syntaxe int Val = Value;.

    Et là, tu verras qu'il y a un gros problème avec les types. Tu joues avec des string / int / char et des conversions dans tous les sens, c'est pas bon.
    Le mieux c'est de définir Val et Value en tant que string pour simplifier.
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  9. #9
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 045
    Points : 11 368
    Points
    11 368
    Billets dans le blog
    10
    Par défaut
    Y a que moi qui soit choqué par ça? if main(){
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  10. #10
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 695
    Points : 2 434
    Points
    2 434
    Par défaut
    Ah oui, je l'avais pas vue celle-là
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut reponse
    vu que c'est un chiffre, je mets que des "int" alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
    int value
    int val = value
    // mais pour le mettre en mémoire je fais
    int val(value);// même avec ça, cela ne fonctionne pas non plus
    Bon, je crois que j ai un gros problème connaissance, je vais devoir acheter un
    bouquin pour me remettre à niveau, car je pense que j'ai de grosses lacunes
    en savoir, et que les tutoriaux en lignes ne sont pas complets.
    Dernière question : Vous me conseillez quoi comme bouquin en c++ ?

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut reponse
    Mince cela fonctionne presque.
    Je dois récupérer 1 mais j ai zéro c'est déjà une avancé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #include <iostream> 
    #include <string> 
    #include <fstream> 
    #include "sierrachart.h" 
    #include <stdio.h> 
    #include <time.h> 
     
    main(){
       ifstream Files("Z:\\SC_Graphique_rithmic\\Data\\Val.txt", ios::in);
       if(Files){ 
                 int Value;
    	     int Val(Value);
    	     Files.close();
                }//Right 
       else{ return 0; }//Wrong
        }
    cout << Val << end1;
    return 0;

  13. #13
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 695
    Points : 2 434
    Points
    2 434
    Par défaut
    Huum là tu lis même plus dans le fichier du tout. Tu récupères un 0 d'on ne sait où.

    De plus, tu créés deux variables Val et Value que tu ne défini pas.
    Je fais appel aux esprits de Ritchie, Kernighan, Stroustrup et Alexandrescu
    Donnez moi la force, donnez moi le courage de coder proprement !

    « Ça marche pas » n'est PAS une réponse convenable, merci de détailler le souci en fournissant l’environnement, le code source, les commandes et les messages d'erreur.

    Ce club possède également un clavardage, on y trouve quelques perles entre deux sessions d'entraides.

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut
    oups j'ai oublié de mettre en écrivant le code, le string Value avant le int value pour récupérer la ligne dans le fichier désolé.

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut reponse
    j'ai trouvé cela sur google

    c'est ça, que je veux faire mais je n'arrive pas mettre le la valeur de la ligne en mémoire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    #include <iostream>
    #include <string>
    #include <fstream>
     
    using namespace std;
     
    int main()
    {
            ifstream fichier("val.txt", ios::in);
     
            if(fichier)
            {
                    int entier1, entier2;
                    string chaine1, chaine2;
     
                    fichier >> entier1 >> entier2 >> chaine1 >> chaine2;  /*on lit jusqu'à l'espace et on stocke ce qui est lu dans la variable indiquée */
     
                    fichier.close();
            }
            else
                    cerr << "Impossible d'ouvrir le fichier !" << endl;
     
            return 0;
    }

  16. #16
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 045
    Points : 11 368
    Points
    11 368
    Billets dans le blog
    10
    Par défaut
    Il va falloir arrêter de faire n'importe quoi là, c'est un vrai festival!

    La fonction main, c'est pas main(), mais int main(int argc, char ** argv), alors certes le compilateur est tolérant et l'accepte, mais il n'empêche que mieux on respecte le standard, mieux on se porte, dans un langage aussi tordu que le C++.
    Ensuite, il faut arrêter de poster du code sans rien tester... Parce que la première erreur que j'ai levée, ça donnait un code non compilable...
    On peut t'aider sur des problèmes de compréhension de l'exécution, ou même de compilation, mais là, tu postes du code sans passer par la case compilation (donc sans chercher à comprendre...)

    EDIT:

    int main() c'est mieux, mais pas encore ça
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 329
    Points : 126
    Points
    126
    Par défaut reponse
    Bon cben sierra c'est un compilateur de merde ok ,je vais acheter un boquin !! merci

  18. #18
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 963
    Points
    32 963
    Billets dans le blog
    4
    Par défaut
    Ce code n'a toujours aucune chance de compiler parce que Val est utilisé hors de son scope et n'existe pas.
    Citation Envoyé par carmen256 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #include <iostream> 
    #include <string> 
    #include <fstream> 
    #include "sierrachart.h" 
    #include <stdio.h> 
    #include <time.h> 
     
    main(){
       ifstream Files("Z:\\SC_Graphique_rithmic\\Data\\Val.txt", ios::in);
       if(Files){ 
                 int Value;
    	     int Val(Value);
    	     Files.close();
                }//Right 
       else{ return 0; }//Wrong
        }
    cout << Val << end1;
    return 0;
    Y'a rien de bon, ni l'indentation, ni les accolades, le main, un cout et return hors du main, des includes qui servent à rien, ...
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/04/2016, 14h10
  2. [XL-2013] Récupérer des données dans un fichier text rangé en colonne et les exporter dans excel
    Par kikimarabou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/04/2015, 13h08
  3. Réponses: 3
    Dernier message: 21/06/2007, 01h10
  4. [](VB) Récupérer les données dans un fichier .xml
    Par Furius dans le forum VBScript
    Réponses: 4
    Dernier message: 02/10/2005, 20h39
  5. [JTable] Comment récuperer les données d'un fichier texte ?
    Par Makunouchi dans le forum Composants
    Réponses: 2
    Dernier message: 03/05/2005, 16h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo