à l'aide pour fusioné la fonction getline + fct strtok [Résolu]

Signaler
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010
-
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010
-
salut,
voici mon problmé, je veux lire un fichier txt, je le fais avec la fonction getline. voici le code :

#include <string>
#include <fstream>
#include


int main()
{
    // le constructeur de ifstream permet d'ouvrir un fichier en lecture
    std::ifstream fichier( "strtok esséye.txt" );


    if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
    {
        std::string ligne; // variable contenant chaque ligne lue


        // cette boucle s'arrête dès qu'une erreur de lecture survient
        while ( std::getline( fichier, ligne ) )
        {
            // afficher la ligne à l'écran
            std::cout << ligne << std::endl;
        }
    }
}

le fichier que je lis contient des chaine de caractére comme suit :
123à12123
1à143
123à2352

et j'ai la fonction strtok qui m'enléve le caractére "à" et qui m'afiche seulement les chiffre, dans le code est

#include
#include <stdlib.h>
#include <string.h>
main ( )
{
char *pointeur;
char *separateur = { "à" };
char  *buffer;
char    *Chaine_Entrante="2063à2093";
 
buffer = strdup ( Chaine_Entrante );


pointeur = strtok( buffer, separateur  );
cout<<"\n CIC : "<< pointeur;
    
while( pointeur != NULL )
{
pointeur = strtok( NULL, separateur  );
if ( pointeur != NULL )
{
cout<<"\n CIC : "<


maximus

4 réponses

Messages postés
14867
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 novembre 2020
93
Et ben? Tu ne vois vraiment pas?
Bon, on récapitule:
- tu as un code qui, à chaque itération, affiche une ligne d'un fichier
- tu as un code qui récupère des chiffres dans une chaine de caractères
Si tu mets l'action de la 2e phrase dans la 1ère, tu obtiens quoi?

Tu vois ce que je sous-entend?
Bien sûr, il y a une petite conversion de données à faire...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

merçi pour la réponse mais je comprend ce que vous dite, le probléme c'st que je n'arrive pas a récupèré les chiffres à partir des ligne de mon fichier txt !!




maximus
Messages postés
14867
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 novembre 2020
93
Bon, ok.
J'avais un peu de temps devant moi, j'ai donc écrit le code suivant

#include <string>
#include <fstream>
#include
using namespace std;
int main()
{
    // le constructeur de ifstream permet d'ouvrir un fichier en lecture
    ifstream fichier("test.txt");

    if (fichier) // ce test échoue si le fichier n'est pas ouvert
    {
        string ligne; // variable contenant chaque ligne lue

        // cette boucle s'arrête dès qu'une erreur de lecture survient
        while (getline(fichier,ligne))
        {
            // afficher la ligne à l'écran
            cout << ligne << endl;

            // Récupération de la position du séparateur
            size_t pos=ligne.find_first_of("à");

            // la sous-chaine de gauche donne le 1er entier
            int a=atoi(ligne.substr(0,pos).data());

            // la sous-chaine de droite, le second
            int b=atoi(ligne.substr(pos+1).data());

            // Affichage du résultat
            cout << a << "  " << b << endl;
        }
    }

    fichier.close();
}

A noter que:
- "à123" retourne "0  123"

- "123à" retourne "123  0"

- "123" retourne "123  123"



- "à" retourne "0  0"

ça te va?

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

merçi pour votre aidé, je vous suis reconnaissent
maximus