[C++] Lecture de fichier.
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

[C++] Lecture de fichier.



  1. #1
    Lulu350

    Unhappy [C++] Lecture de fichier.


    ------

    Bonjour,

    Le fichier .txt est comme ceci:

    0 12.5 15.6 41 36.5 455.2 45
    45 56.2 8.1 564 25

    Donc des flottants et des entiers. (2000 lignes avec 20 valeurs chacune)
    En fonction des paramètres d'entrée je vais récupérer la valeur qui m’intéresse.

    Je vous copie le bout de fonction qui m'interesse et qui me pose problème.

    Code:
    	ifstream monflux("D:\courbe\luc.txt");
    
    	if(monflux) 
    {
    }
    	else
    		cout<<"Erreur: Impossible d'ouvrir le fichier en lecture."<<endl;
    
    	for(int i=0; <index; i++)	
    	{
    		monflux >>loss;
    		cout<<" "<<loss<<endl;  //Pour des vérifications
    	}
    	
    	return loss;


    La fonction me renvoit "ERREUR:impossible d'ouvrir le fichier en lecture"
    Et une liste de 0 autant qu'il y a d'index..

    Savez vous d'où vient le problème ?

    Merci

    -----
    Dernière modification par Jack ; 27/05/2015 à 15h37. Motif: ajout balises code

  2. #2
    Jack
    Modérateur

    Re : [C++] Lecture de fichier.

    Le backslash (\) est un caractère d'échappement en C++. Il faut donc le doubler pour que le compilateur l'interprète comme un simple caractère \.

    Code:
    ifstream monflux("D:\\courbe\\luc.txt");
    Si je peux me permettre, ton if ... est simplifiable puisque seule la clause else est utile:
    Code:
    if(monflux) 
    {
    }
    else
        cout<<"Erreur: Impossible d'ouvrir le fichier en lecture."<<endl;
    devient donc:
    Code:
    if(!monflux)
         cout<<"Erreur: Impossible d'ouvrir le fichier en lecture."<<endl;
    Dernière modification par Jack ; 27/05/2015 à 15h44.

  3. #3
    Lulu350

    Re : [C++] Lecture de fichier.

    Ah oui merci beaucoup ça a bien fonctionné.
    Seulement il me reste encore un petit problème.

    Je dois ouvrir un fichier texte en fonction de la fréquence en paramètre envoyée dans la fonction. Je vous montre le code:

    Code:
    	// Ouvrir le bon fichier concernant la bonne plage de valeurs pour la fréquence associée
    	if (freq==125) ifstream monflux ("D:\\utilisateurs\\lheran\\Documents\\Visual Studio 2010\\Projects\\uit528\\125.txt");
    	if (freq==300) ifstream monflux ("D:\\utilisateurs\\lheran\\Documents\\Visual Studio 2010\\Projects\\uit528\\300.txt");
    	if (freq==600) ifstream monflux ("D:\\utilisateurs\\lheran\\Documents\\Visual Studio 2010\\Projects\\uit528\\600.txt");
    	if (freq==1200) ifstream monflux ("D:\\utilisateurs\\lheran\\Documents\\Visual Studio 2010\\Projects\\uit528\\1200.txt");
    	if (freq==2400) ifstream monflux ("D:\\utilisateurs\\lheran\\Documents\\Visual Studio 2010\\Projects\\uit528\\2400.txt");
    	if (freq==5100) ifstream monflux ("D:\\utilisateurs\\lheran\\Documents\\Visual Studio 2010\\Projects\\uit528\\5100.txt");
    	if (freq==9400) ifstream monflux ("D:\\utilisateurs\\lheran\\Documents\\Visual Studio 2010\\Projects\\uit528\\9400.txt");
    	if (freq==15500) ifstream monflux ("D:\\utilisateurs\\lheran\\Documents\\Visual Studio 2010\\Projects\\uit528\\jj.txt");
    
    	//lire dans le fichier la valeur
    
    	for(int i=0; i<h_index+d_index; i++)	
    	{
    		monflux >>loss;
    			cout<<" "<<loss<<endl;
    	}
    Dans la boucle for, le "monflux" est souligné en rouge comme si le programme ne le définissait pas à cause des if statement.
    Savez vous comment déjouer ça ?
    Merci !!

  4. #4
    Jack
    Modérateur

    Re : [C++] Lecture de fichier.

    Oui, rien ne garantit que monflux sera instancié puisque dépendant de conditions dont l'une ne sera pas forcément réalisée.

    Il suffit donc de vérifier que monflux a été instancié avant de lancer la boucle:

    Code:
    if (!monflux)
         cout<<"Erreur: Impossible d'ouvrir le fichier en lecture."<<endl;
    else {
         for(int i=0; i<h_index+d_index; i++) {
              monflux >>loss;            cout<<" "<<loss<<endl;
         }
    Dernière modification par Jack ; 28/05/2015 à 10h39.

  5. A voir en vidéo sur Futura
  6. #5
    Lulu350

    Re : [C++] Lecture de fichier.

    Merci Jack de répondre aussi vite

    J'ai changé mon bout de code mai j'ai toujours le
    Code:
    if(!monflux)
    Avec le monflux en rouge, "Erreur Identificateur monflux non reconnu"..

    Au pire je supprime mon projet et je recolle tout dans un nouveau ? j'ai peu-être touché appuyé sur une mauvaise option (générer dégénerer, je sais pas quoi ) je suis sur visual 2010

  7. #6
    Jack
    Modérateur

    Re : [C++] Lecture de fichier.

    Non, mon code n'est pas bon puisque monflux n'est toujours pas systématiquement instancié. Il faut l'instancier avec le constructeur par défaut:
    Code:
            ifstream monflux;
    	// Ouvrir le bon fichier concernant la bonne plage de valeurs pour la fréquence associée
    	if (freq==125) monflux.open("D:\\utilisateurs\\lheran\\Documents\\Visual Studio 2010\\Projects\\uit528\\125.txt");
    	if (freq==300) monflux.open("D:\\utilisateurs\\lheran\\Documents\\Visual Studio 2010\\Projects\\uit528\\300.txt");
    	//etc
    
    
    
    
    	//lire dans le fichier la valeur
    
    
            if (!monflux)
                 cout<<"Erreur: Impossible d'ouvrir le fichier en lecture."<<endl;
            else {
                 for(int i=0; i<h_index+d_index; i++) {
                       monflux >>loss;            cout<<" "<<loss<<endl;
                  }
      //etc.

  8. #7
    Lulu350

    Cool Re : [C++] Lecture de fichier.

    Ahh of course !!

    Merci Jack t'es le meilleur

Discussions similaires

  1. lecture fichier audio wma
    Par nasssi dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 17/06/2012, 20h52
  2. lecture fichier Python
    Par berguem40 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 09/09/2011, 11h25
  3. Matlab Lecture de n fichier .txt et ecriture dans un fichier .xls
    Par invite24513ab6 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 26/07/2010, 09h12
  4. lecture de fichier
    Par invite3ff396ad dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 16/03/2008, 20h50
  5. lecture de fichier
    Par invitefc5b3186 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 26/07/2004, 20h32