Extraire des lignes d'un fichier csv avec visual C++

cs_cre31400 Messages postés 7 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008 - 15 juil. 2008 à 14:18
cs_cre31400 Messages postés 7 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008 - 16 juil. 2008 à 10:58
Bonjour,

J'utilise visual C++, et j'aurais besoin de votre aide.
J'ai un fichier .csv contenant environ 1000 lignes, mais seulement une trentaine sont intéressantes pour moi. il est structuré de cette manière :

environ 1000lignes qui me servent à rien
[espace][espace]<name>name1</name>
quelques lignes
[espace][espace]<coordinate>longitude1,lattitude1</coordinate>
quelques lignes
[espace][espace]<name>name2</name>
quelques lignes
[espace][espace]<coordinate>longitude2,lattitude2</coordinate>
quelques lignes
[espace][espace]<name>name3</name>
quelques lignes
[espace][espace]<coordinate>longitude3,lattitude3</coordinate>
etc...

J'aurai besoin d'en extraires les lignes avec les noms et coordonnées pour avoir au final quelque chose comme cela:
[espace][espace]<name>name1</name>
[espace][espace]<coordinate>longitude1,lattitude1</coordinate>
[espace][espace]<name>name2</name>
[espace][espace]<coordinate>longitude2,lattitude2</coordinate>
[espace][espace]<name>name3</name>
[espace][espace]<coordinate>longitude3,lattitude3</coordinate>

Je me suis lancé sur les TStringList, mais ce n'est pas compatible avec Visual C++ . Quelqu'un aurait-il une piste svp ?? Le truc c'est d'extraire les lignes contenant <name> et <coordinate>.

Merci infiniment !

4 réponses

cs_Lucky92 Messages postés 180 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 16 août 2012 2
15 juil. 2008 à 18:42
#include
#include <fstream>
#include <string>

using namespace std;

int main()
{
    ifstream ifs( "toto.csv" );
    ofstream ofs( "new_toto.csv" );
    string line;
    while ( getline( ifs , line ) )
    {
        if (   line.find( "<name>" ) != string::npos
            || line.find( "<coordinate>" ) != string::npos )
        {
            ofs << line << endl;
        }
    }
    return 0;
}
1
cs_cre31400 Messages postés 7 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008 1
16 juil. 2008 à 10:38
bon j'ai essayé ce que tu m'as donné mais cela ne marque rien dans le fichier... j'ai modifié le nom du fichier (toto.csv par le bon nom) , mais après je n'ai rien changé. Ca compile bien, mais ca ne marque rien...
sais-tu pourquoi? 
1
cs_cre31400 Messages postés 7 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008 1
16 juil. 2008 à 09:08
salut;

merci beaucoup pour ta réponse, enfin pour ta solution complète apparement même. J'ai deux petites questions, comment s'incrémente le programme? et où doit se situer le fichier pour que le programme le sélectionne automatiquement?

Merci beaucoup en tout cas!
0
cs_cre31400 Messages postés 7 Date d'inscription mardi 15 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008 1
16 juil. 2008 à 10:58
t'es énOOOOORme !! merci ca fait une semaine que je galère sur ça (et oui...) !! j'ai exactement ce qu'il me faut !! (enfin ce n'est que le début mais bon!)

par contre, est-il possible d'indicer les lignes sur un fichier texte ou .csv? c'est pour pouvoir manipuler les lignes après genre ligne[i] un truc comme ca.

Merciiiiiiiiiiiiiii
0
Rejoignez-nous