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

SL & STL C++ Discussion :

Probleme avec ifstream [FAQ]


Sujet :

SL & STL C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 8
    Par défaut Probleme avec ifstream
    bjr,
    je veux lire un fichier texte mais voilà j'ai une erreur que je n'arrive pas à resoudre, sur le code suivant :

    string str;
    ifstream is;
    is.open ("access.txt", ios::in );
    if(!is)
    throw "Le programme n'a pas reussi a ouvrir le fichier\n";
    is >> str;


    avec les include suivant
    #include <string>
    #include <fstream.h>

    visual me donne l'erreur :error C2872: 'ifstream' : ambiguous symbol

    si vous avez une idee ?

  2. #2
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Par défaut
    Salut !!

    Esaie voir avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <string> 
    #include <fstream> 
     
    int main()
    {
     
    std::string str; 
    std::ifstream is("access.txt"); 
    if(!is) 
    throw "Le programme n'a pas reussi a ouvrir le fichier\n"; 
    is >> str; 
     
        return 0;
    }
    Redit- moi.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 8
    Par défaut
    ouaih ba C bon sa marche, j te remerci juste un dernier renseignement sur l'utilité de std:: ?

  4. #4
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Par défaut
    En fait cela indique que tes classes proviennent du namespace std,

    Pour pouvoir les supprimer tu peux rajouter cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    using namespace std;
    Si tu veux plus d'info tu as aussi la FAQ :
    http://lfe.developpez.com/FAQ/CPP/?p...sing_namespace

    Voila

    en espèrant t'avoir aidé...

  5. #5
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Il faudrait corriger la FAQ à ce sujet :
    http://lfe.developpez.com/FAQ/CPP/?p...ture_par_ligne
    c'est plein d'erreurs :
    le new ne sert à rien (+ pas de delete)
    utiliser std::string et pas un char *
    include <iostream> et <fstream> sans les .h
    mettre un test de réussite d'ouverture
    ne pas utiliser eof (inutile et condition pas suffisante)
    pas besoin du return ni du close (si pas de new)
    ...
    Je propose ce code :
    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
     
    #include <string>
    #include <fstream>
    #include <iostream>
     
    int main()
    {
        std::string ligne;
        std::ifstream fichier( "monfichier.txt" );
     
        if ( fichier )
        {
            while ( std::getline( fichier, ligne ))
            {
                std::cout << ligne << std::endl;
            }
        }
    }

  6. #6
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Par défaut
    Salut HW !!

    je suppose que tu t'es tromper de Post, car je ne vois pas de rapport avec ce que tu dit et la question en cours... (ou alors faut m'expliquer)

  7. #7
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Il critique en effet une autre question de la FAQ -- je partage la critique d'ailleurs -- qui est toutes fois en thème avec la question posée.

    Concernant ce point précis (std), il est faux de dire que c'est équivalent. C'est équivalent seulement pour la bibliothèque de GCC. Pour les autres, cela se résume vaguement à "avant" vs "maintenant" ; le bout de code du hibou n'aurait jamais pu compiler avec VC++, d'ailleurs ...
    Dire que c'est équivalent est un raccourci qui peut laisser croire que cela ne change rien d'utiliser une forme ou l'autre. Ce n'est pas le cas.

    PS: j'avais déjà signalé ces points et d'autres dans un post-it ...
    PPS: utilise les balises code pour les prochains posts le hibou, merci d'avance.
    PPS: Seboubou, il faut pas oublier de rattrapper ce que tu lances.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  8. #8
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Par défaut
    PPS: Seboubou, il faut pas oublier de rattrapper ce que tu lances.
    Hum ??? tu entends quoi par la ??? (je suis blond, donc je comprend les choses assez lentement)

  9. #9
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Rien à voir avec ta couleur de cheveux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try {
        throw std::runtime_error("ouverture impossible!");
    } catch (std::exception & e) {
        std::cerr << "Erreur: " << e.what() << std::endl;
    }
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  10. #10
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Par défaut
    Ah ok,

    je comprend mieux, en fait je ne pouvais pas corriger cela, simplement car je n'ai encore jamais utiliser les exceptions et je ne sais pas comment cela fonctionne.

    Merci de m'avoir corriger !!

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2004
    Messages : 124
    Par défaut
    Bonjour à tous

    J'aurai juste 2 petites questions en rapport aux réponses...
    is >> str; ca sert à quoi ?
    cerr ou cout ? Les 2 font la même chose pour moi ! Y a t'il un intérêt majeur à utiliser cerr ?

    Merci d'avance

    P.S. : Désolé je débute en C++

  12. #12
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    sert à lire une donnée du type de celui de str sur le flux is ; ici une chaine de caractères.

    std::cerr est le flux pour les erreurs et std::cout est le flux de sortie standard. A priori pas de différence visible. Sauf avec un vrai shell qui nous permettra de logger les erreurs dans un fichier et de les afficher ou non sur la console ; et même chose avec la sortie standard.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2004
    Messages : 124
    Par défaut
    Ok merci beaucoup luc

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

Discussions similaires

  1. Probleme avec le fichier ifstream et ofstream
    Par mimo1213 dans le forum C++
    Réponses: 1
    Dernier message: 24/10/2013, 11h19
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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