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

 


Dernière réponse
Sujet : [C++] je sais pas lire dans un fichier ...
minusplus 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)

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
minusplus 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)
Bluetooth

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 !

tgrx Et si au lieu de declarer 'string s', tu declares 'cstring s' ?
Bluetooth 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 :(
tgrx Oui mais t'es sous Visual C++ j'imagine...
 
alors #include <cstring> je crois
Bluetooth

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 ....

DuffBeer 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 ! :)
Bluetooth 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
////////////////////////////////
minusplus ton code en entier, c'est quoi ?
Bluetooth 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 ??
tgrx minusplus> exact. j'avais pas vu que ses donnees etaient organisees.
Bluetooth std:: string ?? ca marche pas quand je fais
 
std::string c;
file >> c;
 
:-(
tgrx 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;
minusplus file >> string1 >> nb1 >> string2 >> nb2 >> string3 >> ...
 
etc...
 
il va te récupérer :
string1 : "ZEF"
nb1 : 14
string2 : "SD"
nb2 : 24
string3 : "QSDFQSDF"
 
etc...
Bluetooth 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 :-)

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