cs_bny
Messages postés24Date d'inscriptionlundi 6 mars 2006StatutMembreDernière intervention31 mai 2010
-
6 juil. 2009 à 20:39
cs_bny
Messages postés24Date d'inscriptionlundi 6 mars 2006StatutMembreDernière intervention31 mai 2010
-
7 juil. 2009 à 16:50
Bonjour, j'essaie de décoder un fichier de configuration(txt) j'ai
certain problèmes avec les types de données et l'opérateur >>
(flux de données).
J'ai un fichier avec le format suivant :
Noeud(string) int int int (nombre de int aléatoire...cetaines fois il n'y en a aucun)
Noeud2(string) int
Noeud3
...etc
J'essaie
de mettre les données recueillies dans des variables et après dans une
structure. Le problème est le suivant : Je ne sais jamais si la
prochaine donnée est un int ou un string...alors quand je vérifie par
exemple while(fichierconfig >> nomNoeud) et que la prochaine
donnée est un int...il est incapable de la lire. N'y a-t-il pas une
façon de le faire continuer à lire les données qu'importe leur format
en utilisant l'opérateur >> (je ne veux pas être obligé de faire
un read et de décortiquer un gros tableau de char si possible...). Si
ce n'est pas assez clair, voici mon code :
while(fichierConfig >> nomNoeud(string))
{
while(fichierConfig >> noPatte(int))
{
...Fait des trucs pour mettre les données dans les bonnes variables
}
}
Il
lit donc le nom du premier noeud et quand il arrive à la fin de la
première rangée de patte, il boucle mais ne réussit pas à mettre le nom
du deuxième noeud dans la variable et le programme se termine
là...quand je met un "while(!eof())" il boucle à l'infini. Si
quelqu'un est bon avec les fichiers merci de bien vouloir
m'éclairer...ça ne devrait pas être vraiment compliqué à régler comme
problème. Merci !
A voir également:
La conversion d'un type de données varchar en type de données datetime a créé une valeur hors limites
cs_Lucky92
Messages postés180Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention16 août 20122 7 juil. 2009 à 06:42
Salut,
Si les différents noeuds sont présentés sur des lignes différentes, tu peux procéder de la façon suivante :
#include
#include <fstream>
#include <sstream>
using namespace std ;
int main()
{
ifstream ifs( "toto.txt" ) ;
string line ;
while ( getline( ifs , line ) )
{
istringstream iss( line ) ;
string noeud ;
int i ;
iss >> noeud ;
while ( iss >> i )
{
//...
}
}
}
cs_bny
Messages postés24Date d'inscriptionlundi 6 mars 2006StatutMembreDernière intervention31 mai 2010 7 juil. 2009 à 16:50
Hey bin, merci :), ça marche #1, c'est vrai que c'est logique d'utiliser une stringstream, disons que je n'ai pas souvent utiliser cet outil alors je n'y pense pas toujours. Je le saurai donc à l'avenir, merci beaucoup !