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++Builder Discussion :

Probléme Fonction Getline()


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 80
    Par défaut Probléme Fonction Getline()
    Bonjour,

    Contexte :

    J'aimerais ouvrir un fichier et lire ligne par ligne les différents éléments délimités par un ";".

    Erreur :
    Je n'arrive pas à utiliser convenablement la fonction Getline() et ifstream.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [BCC32 Erreur] Unit1.cpp(97): E2285 Impossible de trouver une correspondance pour 'ifstream::basic_ifstream(wchar_t *,UnicodeString)'
     
     
    [BCC32 Erreur] Unit1.cpp(103): E2285 Impossible de trouver une correspondance pour 'std::getline<_Elem,_Traits,_Alloc>(ifstream,AnsiString)'

    Structure Getline() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #include <string>
    istream& std::getline( istream& is, string& s, char delimiter = '\n' );
    Je procède donc de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    String mon_fichier = "blabla.txt";
    String s;
    ifstream fichier(mon_fichier.c_str(), ios::in);
     
    if(fichier)  // si l'ouverture a réussi
    		{
    				String ligne;  // déclaration d'une chaîne qui contiendra la ligne lue
     
    				while(std::getline(fichier, ligne, ";"))  // tant que l'on peut mettre la ligne          dans "contenu"
    				{
     
    					  // traitement
    				}

    De plus j'ai bien inclue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #include <string>
    #include <fstream>

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par défaut
    salut

    Pourquoi pas un stringlist et loadfromfile ?

    Tu peux poster un sample de ton fichier , 2 ou 3 lignes suffiront

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 80
    Par défaut
    J'ai réussi à résoudre ma première erreur mais il me reste toujours celle du getline().

    "Aucune fonction C++ n'a été détectée avec les paramètres correspondant aux arguments fournis. Vérifiez les paramètres transmis à la fonction ou surchargez la fonction pour les paramètres en cours de transmission".

    Je me suis aidé de http://www.developpez.net/forums/d95...r-cpp-builder/ pour mon code.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 80
    Par défaut
    Voila je n'ai plus d'erreur maintenant, je vais tester si le tout fonctionne bien.

    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
     
    void __fastcall TForm1::TestClick(TObject *Sender)
    {
    std::string mon_fichier = "blabla.txt";
    std::string s;
    ifstream fichier(mon_fichier.c_str(), ios::in);
     
    if(fichier)  // si l'ouverture a réussi
    		{
    				std::string ligne;  // déclaration d'une chaîne qui contiendra la ligne lue
     
    				while(std::getline(fichier, ligne,';'))  // tant que l'on peut mettre la ligne          dans "contenu"
    				{
     
    					 ShowMessage(mon_fichier.c_str());
    				}
     
    				fichier.close();  // on ferme le fichier
    		}
    		else  // sinon
    				ShowMessage( "Impossible d'ouvrir le fichier !" );
    }
    Edit : Impec .

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 80
    Par défaut
    Dans la continuité de mon programme, je me retrouve face à un autre problème avec la fonction sscanf :

    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
     
    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
    TStringList *sl = new TStringList();
    sl->LoadFromFile( "blabla.txt" ) ;
    std::string  Date;
    std::string  test1;
    std::string  test2;
     
    for( int i=0; i < sl->Count; i++ )
    {
    AnsiString l= sl->Strings[i];
    sscanf(l.c_str(),"%s;%s;%s;", &Date[i], &test1[i], &test2[i]);
       ShowMessage( sl->Strings[i] );
       ShowMessage(Date.c_str());
       ShowMessage(test1.c_str());
       ShowMessage(test2.c_str());
    }
    delete sl ;
    }
    Mon fichier blabla.txt est structuré de cette façon :

    26/10/2010 11:28:26;Test Structure 1;Test Structure 2

    ShowMessage( sl->Strings[i] ) ; me renvoi la ligne complète de mon fichier.
    ShowMessage(Date.c_str()); me renvoi uniquement "26/10/2010".
    ShowMessage(test1.c_str()); et ShowMessage(test2.c_str()); me renvoi du vide.


    => RESOLU en utilisant la fonction strtok();

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

Discussions similaires

  1. Problème avec la fonction Getline
    Par Arman dans le forum C++
    Réponses: 3
    Dernier message: 26/07/2013, 14h48
  2. Problème avec la fonction getline
    Par iamor dans le forum C++
    Réponses: 36
    Dernier message: 11/08/2006, 11h29
  3. Problème fonction PL/SQL
    Par SSJ17Vegeta dans le forum PL/SQL
    Réponses: 2
    Dernier message: 29/10/2005, 21h14
  4. Problème fonction et trigger sous 7.2
    Par anoukhan dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/06/2005, 22h53
  5. Réponses: 2
    Dernier message: 20/08/2004, 17h10

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