Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1707 connectés 

  FORUM HardWare.fr
  Programmation

  [C++] je sais pas lire dans un fichier ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] je sais pas lire dans un fichier ...

n°34738
Bluetooth
Posté le 28-05-2001 à 11:36:38  profilanswer
 

le fichier est du genre :
 
ZEF 14 SD 24 QSDFQSDF 45
SDD 45 sd 46 SDSDSDSD 78
 
je dois recuperer a la fois les strings et les nombres.
avant je faisais juste 'file >> nb'.
maintenant, je sais plus faire...car '>>' 'saute' les espaces
si qlq un a une petite idee please :-)

mood
Publicité
Posté le 28-05-2001 à 11:36:38  profilanswer
 

n°34743
minusplus
Posté le 28-05-2001 à 11:49:10  profilanswer
 

file >> string1 >> nb1 >> string2 >> nb2 >> string3 >> ...
 
etc...
 
il va te récupérer :
string1 : "ZEF"
nb1 : 14
string2 : "SD"
nb2 : 24
string3 : "QSDFQSDF"
 
etc...

n°34745
tgrx
My heart is pumping for love
Posté le 28-05-2001 à 11:51:21  profilanswer
 

Ton probleme c'est de separer les nombres des strings ?
 
ifstream f("file" );
if (f==NULL) ...
 
while (! f.eof())
{
  string s;
  f >> s;
 
  if ((s.c_str()[0])>='0') && (s.c_str()[0])<='9')) // nombre
    TraiteNombre(atoi(s.c_str());
  else
    TraiteString(s);
}
 
avec  
void TraiteNombre(int i);
void TraiteString(string s);
 
Je suis d'accord que le 'atoi' c'est du C, pas du C++. A la rigueur il faudrait utiliser un strstream a la place.
Un truc du genre :  
 
strstream in(s);
int nombre;
s >> a;

n°34746
Bluetooth
Posté le 28-05-2001 à 11:51:49  profilanswer
 

std:: string ?? ca marche pas quand je fais
 
std::string c;
file >> c;
 
:-(

n°34747
tgrx
My heart is pumping for love
Posté le 28-05-2001 à 11:52:22  profilanswer
 

minusplus> exact. j'avais pas vu que ses donnees etaient organisees.

n°34765
Bluetooth
Posté le 28-05-2001 à 13:07:51  profilanswer
 

pb... :
/////////
string c;
/////////
 =>
error C2065: 'string' : undeclared identifier
 
et  
///////////
std::string c;
file >> c;
///////////
 =>  
no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or  
there is no acceptable conversion)
 
 
Ahhh, comment je defini une string moi ??

n°34767
minusplus
Posté le 28-05-2001 à 13:13:35  profilanswer
 

ton code en entier, c'est quoi ?

n°34769
Bluetooth
Posté le 28-05-2001 à 13:19:25  profilanswer
 

ifstream file0("../../Data/R21/res_21.nod.txt" );
if (!file0) {cout << " erreur ouverture "; int f; cin >> f;}  
// ici pas de pb, le fichier est bien ouvert
std::string c;
file0 >> c ;
cout <<c;
////////////////////////////////
 
et le ficher q lire :
1 seule ligne, et ya ecrit :
PARIS
////////////////////////////////

n°34770
DuffBeer
Posté le 28-05-2001 à 13:21:35  profilanswer
 

J'espère que tu n'as pas oublié de mettre l'en-tête #include <string>. :sarcastic:  
En tout cas, la solution de minusplus me plaît en effet elle a marchée dans mon pb. Alors pourquoi dans le tien ! :)

n°34771
Bluetooth
Posté le 28-05-2001 à 13:26:11  profilanswer
 

DuffBeer a écrit a écrit :

J'espère que tu n'as pas oublié de mettre l'en-tête #include <string>. :sarcastic:  
En tout cas, la solution de minusplus me plaît en effet elle a marchée dans mon pb. Alors pourquoi dans le tien ! :)




 
le pb etait la : j'utilisais pas le bon string.
donc maintenant :
j'ai mis #include <string>.
j'ecris 'string c;'
et a la compile : error C2065: 'string' : undeclared identifier
 
j'en ai un peu marre la ....

mood
Publicité
Posté le 28-05-2001 à 13:26:11  profilanswer
 

n°34773
tgrx
My heart is pumping for love
Posté le 28-05-2001 à 13:30:42  profilanswer
 

Oui mais t'es sous Visual C++ j'imagine...
 
alors #include <cstring> je crois

n°34780
Bluetooth
Posté le 28-05-2001 à 13:34:47  profilanswer
 

je suis effectivement sous visual. j'ai cherche le seul fichier string.h sur mon disque dur, et ya que des define, pas de definition de classes, rien.
j'ai mis <cstring> et ca change pas le ms d'erreur de mon post precedent :(

n°34783
tgrx
My heart is pumping for love
Posté le 28-05-2001 à 13:38:41  profilanswer
 

Et si au lieu de declarer 'string s', tu declares 'cstring s' ?

n°34790
Bluetooth
Posté le 28-05-2001 à 13:45:13  profilanswer
 

tgrx a écrit a écrit :

Et si au lieu de declarer 'string s', tu declares 'cstring s' ?




 
t'as faillis me faire peur, mais...perdu, meme message d'erreur !!! :)
LAISSEZ tomber, j'ai trouve une autre solution :
char toto[3];
file >> toto;
 
et ca marhce. je vais pas vous faire perdre plus de temps. En plus ca marche chez Duffbeer, donc le pb est sans doute lus complexe, et je vous ai pas assez donne d'explication.
 
en tt cas merci a vous !

n°34817
minusplus
Posté le 28-05-2001 à 14:39:13  profilanswer
 

ATTENTION ! <cstring> inclue la librarie C "string.h" qui ne contient évidemment pas la classe C++ 'string' !
 
Si vous voulez utiliser la classe 'string', il faut inclure <string> !
 
(string.h contient tous les utilitaires de gestion des tableaux AZT qui constituent les 'chaînes' du C)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C++] je sais pas lire dans un fichier ...

 

Sujets relatifs
MFC, CString, écriture dans un fichier texte.[Borland C++ 5.01] comment effacer un fichier ?
[JS] Est ce qu'on peut écrire dans un fichier en Javascript ?[ASP] Ecriture dans fichier...
supression de fichier en asp je vois pas mon erreur!![PHP] problème de fichier & source de programme pour recharger une bdd
description d'un header, d'un fichier exeHTML, CSS ou JavaScript je sais pas ...
[ASP] fichier INCLUDEASP : Peut-on lire un fichier texte sur un ordinateur client ?
Plus de sujets relatifs à : [C++] je sais pas lire dans un fichier ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR