à aide svp

Résolu
yanlou Messages postés 119 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 août 2010 - 8 juil. 2008 à 12:02
yanlou Messages postés 119 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 août 2010 - 9 juil. 2008 à 11:42
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

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
8 juil. 2008 à 15:12
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...
3
yanlou Messages postés 119 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 août 2010
9 juil. 2008 à 11:42
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
3
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
8 juil. 2008 à 12:44
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
0
yanlou Messages postés 119 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 août 2010
8 juil. 2008 à 12:49
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
8 juil. 2008 à 13:38
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
0
yanlou Messages postés 119 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 août 2010
8 juil. 2008 à 13:45
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
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
8 juil. 2008 à 13:59
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
0
yanlou Messages postés 119 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 août 2010
8 juil. 2008 à 14:24
merçi pour le lien
maximus
0
yanlou Messages postés 119 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 11 août 2010
8 juil. 2008 à 16:19
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
0
Rejoignez-nous