9sber
Messages postés28Date d'inscriptionvendredi 30 avril 2004StatutMembreDernière intervention14 septembre 2004
-
17 mai 2004 à 17:21
9sber
Messages postés28Date d'inscriptionvendredi 30 avril 2004StatutMembreDernière intervention14 septembre 2004
-
19 mai 2004 à 10:54
Salut tout le monde.
Dans un fichier, je sauvegarde des données séparées par des tabulation \t puis lignes par lignes:
nnn hhh 20 0
fff ttt 45 1
hhhh jjj 60 0
mon problème est ensuite des récupérer ces informations.
Je souhaite procéder de la mannière suivante (d'après ce qui j'ai pu trouver dans le forum.
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 20062 17 mai 2004 à 19:21
Tu as du mal lire le forum....
#include <fstream>
#include <sstream>
#include <string>
using namespace std;
ifstream file( "nomfichier.txt" );
string line;
while( getline( file, line ) )
{ // Lecture d'une ligne complête dans le fichier
istringstream iss( line );
for ( int i = 0; i < 4; ++i )
getline( iss, decoupe[i], '\t' );
}
9sber
Messages postés28Date d'inscriptionvendredi 30 avril 2004StatutMembreDernière intervention14 septembre 2004 19 mai 2004 à 09:41
C'est pas mal ta solution, mais ça ne me permet de lire qu'une seule ligne.
Je l'ai modifié un petit peu, mais ca ne change pas grand chose.
Tu as du mal lire le forum....
#include <fstream>
#include <sstream>
#include <string>
using namespace std;
istringstream iss;
ifstream file( "nomfichier.txt" );
string line;
while( getline( file, line ) ){
iss.str(ligne);
for ( int i = 0; i < 4; ++i ){
getline( iss, decoupe[i], '\t' );
cout << "#test#"<<decoupe[j] << endl;}}
et là, je récupère bien les éléments de la première ligne mais pas les éléments de la seconde et suivante...
Je capture bien ces lignes dans le string ligne, mais la découpe ne se fait pas!
Le pb vient en fait du "getline( iss, decoupe[i], '\t' ); " mais je vois pas comment le résoudre.
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 20062 19 mai 2004 à 10:19
tu crées un fichier data.txt contenant des colonnes séparées par des tabulations, et ce programme devrait tout découper comme il faut. A toi de stocker les colonnes à chaque lecture de ligne.
#include
#include <string>
#include <fstream>
#include <sstream>
using namespace std;
int main()
{
ifstream file( "data.txt" );
string line;
while( getline( file, line ) )
{
cout << "Ligne [" << line << ']' << endl;
istringstream iss( line );
string column[4];
for ( int i = 0; i < 4 && getline( iss, column[i], '\t' ); ++i )
cout << "Column " << i << " [" << column[i] << ']';
9sber
Messages postés28Date d'inscriptionvendredi 30 avril 2004StatutMembreDernière intervention14 septembre 2004 19 mai 2004 à 10:54
Ok, j'ai résolu mon pb avec
istringstream iss( line );
En fait, je faisais iss.str(line);
Je trouve comme même bizzard la multi création d'un objet istringstream ayant le même nom dans la même methode.
Même ci la boucle finit puis recommence...