à aide svp [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
-
j'ai un fichier txt ou ya des informations que je veux metre dans un autre fichier mais pas toute, donc je veux choisir les chaine de caractére que je veux recopié.

exemple :

fichier de debart

4100 M RFRPAD8/A8 2063à2093 12361
2000 A RFRPAA8 2094à2124 52443

resultat attendu :

4100 RFRPAD8/A8
2000 RFRPAA8

voici mon code mais c just pour recopié un fichier dans un autre

#include <string>
#include <fstream>
#include
#include <string.h>
#include <fstream.h>
#include

void main()
{
std::ofstream h("test.txt",ios ::out);

std::ifstream fichier( "proto.txt" );

if ( fichier )
{
std::string ligne;

while ( std::getline( fichier, ligne ) )

{
h<< ligne <<std::endl;
}

}

fichier.close();
h.close();
}

ma question c'est :
est ce qu'il ya une façon pour choisir les chaire de caractére qu'on veux affiché, un truc comme donné la position de la chaine qu'on veux affiché.
NB: j'ai cherché dans google mais je n'ai pas trouvé grand chose
merçi d'avance
maximus

9 réponses

Messages postés
14867
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
24 novembre 2020
93
A méditer

#include <string>
#include <fstream>
#include
using namespace std;
int main()
{
    ifstream fichier("fichier.txt");
    ofstream sortie("sortie.txt");
    if (fichier)
    {
        string ligne;
        while (getline(fichier,ligne))
        {
            // Récupération 1er champ et écriture dans le fichier
            size_t pos=ligne.find_first_of(" ");
            sortie << ligne.substr(0,pos) << " ";

            // Saut du 2e saut
            pos=ligne.find_first_of(" ",pos+1);
           
            // Récupération du 3e champ et écriture dans le fichier
            size_t pos2=ligne.find_first_of(" ",pos+1);
            sortie << ligne.substr(pos+1,pos2-pos) << endl;
        }
    }

    fichier.close();
    sortie.close();
}

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

bein, voila c'été about du nez !!

#include <string>
#include <fstream>
#include
using namespace std;
int main()
{
    ifstream fichier("proto.txt");
    ofstream sortie("test.txt");
    if (fichier)
    {
        string ligne;
        while (getline(fichier,ligne))
        {
            // Récupération 1er champ et écriture dans le fichier
            size_t pos0=ligne.find_first_of(";");
   
            sortie << ligne.substr(0,pos0) << " " << endl;


            // Récupération 2e champ et écriture dans le fichier
            size_t pos1=ligne.find_first_of(";",pos0+1);
           
   sortie << ligne.substr(pos0+1,pos0+1-pos0) << endl;


   // Récupération 3e champ et écriture dans le fichier
   size_t pos2=ligne.find_first_of(";",pos1+1);
            sortie << ligne.substr(pos1+1,pos2-pos1-1) << endl;


   // Récupération 4e champ et écriture dans le fichier
   size_t pos3=ligne.find_first_of(";",pos2+1);
            sortie << ligne.substr(pos2+1,pos2-2-pos1) << endl;


   // Récupération 5e champ et écriture dans le fichier
   size_t pos4=ligne.find_first_of(";",pos2+1);
            sortie << ligne.substr(pos3+1,pos3+1-pos0+1) << endl;
        }
    }


    fichier.close();
    sortie.close();
}




maximus
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
17
Bonjour.
Il suffit de faire une fonction qui découpe la chaines de caractères en plusieurs "mots" et après sélectionner les "mots" qui t'intéresses.
Cdt
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

salut, bein j'ai deja la chaine de caractére decoupé en plusieur mot c'est fichier .csv
en plus c'est un grand fichier que je doit manipuler 479 lignes.
je pense que je doit travail est avec la position des mot !!!
maximus
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
17
Pourquoi parles tu d'un .csv ?
dans ton fichier tu as que tu as
4100 M RFRPAD8/A8 2063à2093 12361
il suffit de découper en sous chaine "ligne" dans un tableau (ou dans une liste) en utilisant l'espace comme séparateur
4100
M
RFRPAD8/A8
2063à2093
12361
Il te suffit ensuite de prendre les champs utiles.
Cdt
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

je parle de .csv parsque c'est un fichier exel que j'enregistre sous le format csv, parsque avec le format .txt j'ai des probléme de mise en page

maximus
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
17
Voci l'adresse d'un code pour découper les chaines de caractères
http://www.cppfrance.com/codes/SPLIT-CPLUSPLUS-AVEC-CONTENEURS-STANDARD_43529.aspx
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

merçi pour le lien
maximus
Messages postés
119
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
11 août 2010

oui, je médite :p, je croi que pour l'algo, je les déja fais c vrai que j'ai répartitionné les tache en des petit code pour que ça sois plus facile à les trouvé mes je crois qu'il me reste du travail à fair.
merçi pour les consiel




maximus