 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
giovanni Guest
|
Posted: Thu Jan 20, 2005 10:19 pm Post subject: probleme lire donnee saute une variable |
|
|
ligne dans fichier text.txt : 14/01/1939 5 2 14 32 37 53 70
je sais pas comment faire pour que je prenne que les variable 5 2 14 32 etc
et sauter ce passage 14/01/1939
me sort 14 3998952 2293672 etc
merci
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
int main()
{
ifstream fichier;
int nb_1, nb_2, nb_3,nb_4, nb_5, nb_6, nb_7;
fichier.open("text.txt", ios::in);
if(fichier.bad())
return(1); // Erreur a l'ouverture, on quitte...
fichier >> nb_1 >> nb_2 >> nb_3>>nb_4 >> nb_5 >> nb_6>> nb_7;
printf("test %dn", nb_1);
printf("test %dn", nb_2);
printf("test %dn", nb_3);
printf("test %dn", nb_4);
printf("test %dn", nb_5);
printf("test %dn", nb_6);
printf("test %dn", nb_7);
system("pause");
/*
Maintenant, les trois variables nb_1, nb_2 et
nb_3 contiennent les valeurs des trois entiers
situés dans le fichier.
*/
// Fermeture du fichier
fichier.close();
return(0);
}
|
|
| Back to top |
|
 |
Michel Michaud Guest
|
Posted: Fri Jan 21, 2005 4:45 am Post subject: Re: probleme lire donnee saute une variable |
|
|
Dans le message 41f02e59$1@ews20,
giovanni <giovannich (AT) hotmail (DOT) com> a écrit :
| Quote: | ligne dans fichier text.txt : 14/01/1939 5 2 14 32 37 53 70
je sais pas comment faire pour que je prenne que les variable 5 2
14 32 etc et sauter ce passage 14/01/1939
|
Alors ne le saute pas et n'utilise pas ce que tu as... Dans tous les
cas, il te faudra lire ou sauter les /, avec la lecture d'un char ou
avec ignore. En fait, regarde du côté de ignore, il te sera très
utile !
[...]
| Quote: | #include
[...]
#include
|
Inutile si tu as inclus cstdlib...
| Quote: | using namespace std;
int main()
{
ifstream fichier;
int nb_1, nb_2, nb_3,nb_4, nb_5, nb_6, nb_7;
fichier.open("text.txt", ios::in);
if(fichier.bad())
|
En principe, tu serais mieux de tester .is_open()...
| Quote: | printf("test %dn", nb_1);
|
Tu n'aimes pas cout ?
--
Michel Michaud [email]mm (AT) gdzid (DOT) com[/email]
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
|
|
| Back to top |
|
 |
kanze@gabi-soft.fr Guest
|
Posted: Fri Jan 21, 2005 12:56 pm Post subject: Re: probleme lire donnee saute une variable |
|
|
Michel Michaud wrote:
| Quote: | Dans le message 41f02e59$1@ews20,
giovanni <giovannich (AT) hotmail (DOT) com> a écrit :
ligne dans fichier text.txt : 14/01/1939 5 2 14 32 37 53 70
je sais pas comment faire pour que je prenne que les
variable 5 2 14 32 etc et sauter ce passage 14/01/1939
Alors ne le saute pas et n'utilise pas ce que tu as... Dans
tous les cas, il te faudra lire ou sauter les /, avec la
lecture d'un char ou avec ignore.
|
Ça dépend. Une autre solution consiste en un streambuf filtrant.
C'est assez trivial d'écrire un streambuf qui saute
systèmatiquement les 10 premiers caractères d'une ligne. Et avec
boost::regex ou GB_RegularExpression, c'est même assez simple
d'en écrire un qui les vérifie, toujours sans les renvoyer au
istream.
Ceci dit, sans en savoir plus, c'est difficile à dire si c'est
la solution qui convient. Si son fichier contient des dates, il
y a des chances qu'il aura besoin des lire à un moment ou un
autre. De toute façon, une classe Date avec un opérateur >> me
semble assez intéressant, et alors, sauter la date en tête, avec
vérification du format, c'est un jeu d'enfant -- on lit dans une
variable de type Date, qu'on ignore par la suite.
| Quote: | En fait, regarde du côté de ignore, il te sera très utile !
|
En fait, assez rarement. Sauter des commentaires, ou
résychroniser après une erreur, c'est à peu près tout.
Typiquement, un fichier a un format, et même si on ne
s'intéresse pas à certaines données qu'il contient, on doit en
vérifier le format. (Il y a des exceptions, évidemment.)
--
James Kanze GABI Software http://www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
|
|
| Back to top |
|
 |
Michel Michaud Guest
|
Posted: Fri Jan 21, 2005 6:08 pm Post subject: Re: probleme lire donnee saute une variable |
|
|
Dans le message [email]1106312173.917306.94880 (AT) f14g2000cwb (DOT) googlegroups.com[/email],
[email]kanze (AT) gabi-soft (DOT) fr[/email] <kanze (AT) gabi-soft (DOT) fr> a écrit :
| Quote: | Michel Michaud wrote:
En fait, regarde du côté de ignore, il te sera très utile !
En fait, assez rarement. Sauter des commentaires, ou
résychroniser après une erreur, c'est à peu près tout.
|
As-tu lu le message original ? Il veut « sauter » quelque
chose, pas la valider... On peut dire que c'est une mauvaise
idée, mais pour « sauter », ignore est ce qu'il faut.
--
Michel Michaud [email]mm (AT) gdzid (DOT) com[/email]
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
|
|
| Back to top |
|
 |
giovanni Guest
|
Posted: Fri Jan 21, 2005 10:00 pm Post subject: Re: probleme lire donnee saute une variable |
|
|
ok en resumer j'ecris ca comment?
"Michel Michaud" <mm (AT) gdzid (DOT) com> a écrit dans le message de news:
tybId.59417$W33.1771556 (AT) news20 (DOT) bellglobal.com...
| Quote: | Dans le message [email]1106312173.917306.94880 (AT) f14g2000cwb (DOT) googlegroups.com[/email],
[email]kanze (AT) gabi-soft (DOT) fr[/email] <kanze (AT) gabi-soft (DOT) fr> a écrit :
Michel Michaud wrote:
En fait, regarde du côté de ignore, il te sera très utile !
En fait, assez rarement. Sauter des commentaires, ou
résychroniser après une erreur, c'est à peu près tout.
As-tu lu le message original ? Il veut « sauter » quelque
chose, pas la valider... On peut dire que c'est une mauvaise
idée, mais pour « sauter », ignore est ce qu'il faut.
--
Michel Michaud [email]mm (AT) gdzid (DOT) com[/email]
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
|
|
|
| Back to top |
|
 |
Michel Michaud Guest
|
Posted: Sat Jan 22, 2005 1:00 pm Post subject: Re: probleme lire donnee saute une variable |
|
|
Dans le message 41f17b60$1@ews20,
giovanni <giovannich (AT) hotmail (DOT) com> a écrit :
| Quote: | ok en resumer j'ecris ca comment?
|
flux.ignore(nbDeCaractèresÀIgnorer, délimiteurSiDésiré);
Arrête avant le nbDeCaractèresÀIgnorer si le délimiteur
est rencontré. On peut omettre ce deuxième paramètre (qui
devient la fin de fichier par défaut).
--
Michel Michaud [email]mm (AT) gdzid (DOT) com[/email]
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/
|
|
| Back to top |
|
 |
James Kanze Guest
|
Posted: Sat Jan 22, 2005 10:41 pm Post subject: Re: probleme lire donnee saute une variable |
|
|
Michel Michaud wrote:
| Quote: | Dans le message [email]1106312173.917306.94880 (AT) f14g2000cwb (DOT) googlegroups.com[/email],
[email]kanze (AT) gabi-soft (DOT) fr[/email] <kanze (AT) gabi-soft (DOT) fr> a écrit :
Michel Michaud wrote:
En fait, regarde du côté de ignore, il te sera très utile !
En fait, assez rarement. Sauter des commentaires, ou
résychroniser après une erreur, c'est à peu près tout.
As-tu lu le message original ? Il veut « sauter » quelque
chose, pas la valider... On peut dire que c'est une mauvaise
idée, mais pour « sauter », ignore est ce qu'il faut.
|
J'ai lu le message original. Mais il me donnait l'impression que
l'auteur n'a pas beaucoup d'expérience. Donc, il dit sauter
parce qu'il ne se rend pas compte qu'il faut probablement
valider.
Côté langage, je vois mal comment on peut sauter une date. Parce
que sans la valider, on ne sait pas si c'est réelement une
date. (On pourrait, évidemment, sauter les dix premiers
caractères de chaque ligne.)
Mais là, je pinaille.
--
James Kanze home: www.gabi-soft.fr
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 pl. Pierre Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|