begin process at 2012 05 28 21:39:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

MFC

 > 

Comment récupérer la deuxième colonne d'un fichier .txt en C++.NET


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment récupérer la deuxième colonne d'un fichier .txt en C++.NET

mardi 10 juin 2008 à 22:35:53 | Comment récupérer la deuxième colonne d'un fichier .txt en C++.NET

zebulon88

Bonjour à tous,

Je n'arrive pas à récupérer la deuxième colonne (séparé par une tab de la première colonne) d'un fichier .txt en C++.NET et à la mettre dans un vecteur.
Je précise que je code en .NET avec Visual C++ 2008 Express ce qui complique beaucoup la chose...
Je peux récupérer la n ième ligne il faut mainteant que je prenne le deuxième terme de la ligne.

On peut utiliser Tokenizer mais je n'arrive pas à l'adapter en C++.NET
Je débute en C++..

j'ai trouvé cette méthode mais elle ne fonctionne pas en .NET :

  1. #include <vector>
  2. #include <string>
  3. #include <fstream>
  4. #include <boost/tokenizer.hpp>
  5. using namespace std;
  6. using namespace boost;
  7. int main()
  8. {
  9.   vector<string> colonne;
  10.   string ligne;
  11.   ofstream fichier("truc.txt" );
  12.   while (getline (fichier, ligne))
  13.   {
  14.     typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
  15.     boost::char_separator<char> sep("\t" );
  16.     // tokenisation de la ligne courante
  17.     tokenizer tokens(ligne, sep);
  18.     // Recup des tokens via un token_iterator
  19.     tokenizer::iterator tok_iter = tokens.begin();
  20.     if(tok_iter != tokens.end())
  21.     {
  22.       tok_iter++;
  23.       if(tok_iter != tokens.end()) colonne.push_back(*tok_iter);
  24.       elsethrow string("Fichier corrompu - 2e colonne manquante" );
  25.     }
  26.   }
  27.   return 0;
  28. }


Pourriez vous m'aider s'il vous plait?

Merci beaucoup
mercredi 11 juin 2008 à 19:48:01 | Re : Comment récupérer la deuxième colonne d'un fichier .txt en C++.NET

Lucky92

Ce code utilise la librairie BOOST que tu dois installer. Voir site de "boost consulting".
mercredi 11 juin 2008 à 19:54:23 | Re : Comment récupérer la deuxième colonne d'un fichier .txt en C++.NET

Lucky92

Sinon, c'est pas ofstream, mais ifstream ( fichier en lecture ).
mercredi 11 juin 2008 à 20:03:30 | Re : Comment récupérer la deuxième colonne d'un fichier .txt en C++.NET

Lucky92

Réponse acceptée !
J'ai testé le code avec boost, il fonctionne bien. Mais, tu peux t'en passer :

#include <vector>
#include <string>
#include <sstream>
#include <fstream>
#include <iostream>

int main()
{
    std::vector<std::string> colonne;
    std::string ligne;
    std::ifstream fichier("truc.txt" );
    std::string mot;

    while ( std::getline( fichier , ligne) )
    {
        std::istringstream iss( ligne );
        iss >> mot >> mot ;
        colonne.push_back( mot );
    }
    return 0;
}
mercredi 18 juin 2008 à 11:23:33 | Re : Comment récupérer la deuxième colonne d'un fichier .txt en C++.NET

zebulon88

Bonjour Lucky92,

Ta solution à mon problème est d'une simplicité écoeurante...
Merci beaucoup. (j'étais absent les qq jours précdents)

Je ne sais pas pourquoi ca marchait pas avec boost j'avais bien mis les librairies.

En tout cas merci, j'étais parti sur un genre de solution :
avec des :
StreamReader^ srz = gcnew StreamReader("donnees_en_z.txt");
et des split(), array<String^>^splitz;
        array<String^>^splitk;
    System::Collections::IEnumerator^ myEnumz;

ce qui donne un truc du genre (qui marche pas) :
            while(srk->Peek() >= 0)              
            {   linek = srk->ReadLine();
                splitk = linek->Split(chars);
                myEnumk = splitk->GetEnumerator();
                if(cptligne==4)
                {    StreamReader^ srk = gcnew StreamReader("donnees_en_k.txt");
                    std::ofstream file1( "matrice_w.txt", std::ios_base::app );
                    cptligne=1;file1<<"\n";
                    }else{cptligne++;}
                while ( myEnumk->MoveNext())
                { 
etc..........

Peux tu m'expliquer l'utilité des streamReader en .NET, cela me semble bcp plus compliqué?

Zebul
                 
mercredi 18 juin 2008 à 12:20:54 | Re : Comment récupérer la deuxième colonne d'un fichier .txt en C++.NET

Lucky92

Bonjour,

Heureux que ça t'ait dépanné.

Désolé, je ne connais pas les "streamReader" : c'est du C++ managé,  un langage 100% Microsoft .NET, trés différent du c++ standard ; d'ailleurs, le mélange de technologies, std::ofstream et streamReader, a trés peu de chance d'aboutir !!!

Bonne continuation...

mercredi 18 juin 2008 à 17:20:27 | Re : Comment récupérer la deuxième colonne d'un fichier .txt en C++.NET

zebulon88

Merci.
Sais tu s'il y a un moyen simple pour écrire au début d'un fichier?
J'ai des calculs à faire et le dernier résultat doit se trouver en premier.
(Je ne souhaite pas mettre ca dans un buffer mais l'écrire au fur a mesure)
je n'arrive pas avec seek

Merci de ton aide


Cette discussion est classée dans : fichier, ligne, net, colonne, tokens


Répondre à ce message

Sujets en rapport avec ce message

parser un fichier xml avec tinyxml [ par rabebs ] Bonjour tout le monde Je cherche à récupérer des valeurs des balises se trouvant sous d'autres balises comme:<pre class="alt2" dir="ltr" style="border Comparer 2 fichiers textes rapidement [ par chtitpierre78 ] Bonjour,Suite à un premier poste, dont le titre ne correspond pas du tout a ma demande, je re-poste ici, en espérant trouver  solution à mon problème. test contenu d'une chaine de caractère [ par snakers07 ] bonjour, j'aimerai approfondir une fonction, c'est à dire je possède uen chaine de caractère ici : ChaineRéponse, j'aimerai pouvoir tester son contenu Lecture d'un fichier avec decoupe de chaine. [ par macbang ] Bonjour, je reviens vers vous pour un problème que j'ai du mal a résoudre.Mon programme ouvre un fichier, le but étant de découper ligne par ligne pou traitement d'un fichier [ par boualiasma ] Salut,J'ai un fichier texte bien formé contient deux champs: objet et attribut.tous les objets sont des entiers et tous les attributs sont de chaines aide traitement du fichier [ par boualiasma ] J'ai un fichier qui se compose de deux champs : - numero présenté par un entier - attribut présenté par une chaine caractère. On a la même taille po Chercher un string dans un fichier texte ? [ par chtitpierre78 ] Bonjour,Je développe actuellement un outils en C++ (VisualC++) qui me permet de comparer 2 fichiers textes (.txt) d'environ 4Mo chacun (soit environ 6 Lecture fichier .config [ par wislam2007 ] Salut j ai un fichier .config contient une seul ligne, j'utilise visual c++ 6, comment puis-je faire pour lire ma 1ere ligne? A vs[^^sad1] erreur ecriture sur fichier [ par wislam2007 ] Salut j'ai un petit probleme, j'appel une fct dans une dll .net, jn ai mis en trace la creation d un fichier txt et dont le contenu je met la valeur r


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,466 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales