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

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Lire un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Lire un fichier

n°340176
Konar
Posté le 21-03-2003 à 23:14:25  profilanswer
 

Dommage... Sauf si tu peux rester sous Win32 : les fonctions du type CreateFileMapping et autres sont tout a fait adaptées pour ce ke tu sembles vouloir faire, sont extrement rapides, et assez faciles a comprendre.
 
Apres si le code doit aussi tourner sous linux ou autres nivos, reste plus que les ifstream...

mood
Publicité
Posté le 21-03-2003 à 23:14:25  profilanswer
 

n°340299
Musaran
Cerveaulté
Posté le 22-03-2003 à 07:49:03  profilanswer
 

pour la lecture d'un bloc:

Code :
  1. char buf[N];
  2. ifstream f(...);
  3. f.read(buf, N);


 
Pour la taille d'un flux:

Code :
  1. #include <iostream>
  2. using namespace std;
  3. //Renvoie la taille des données d'un flux (issu de basic_istream ou basic_ostream), -1 en cas d'échec.
  4. //Taille binaire si la distinction binaire/texte existe.
  5. //Notez qu'un flux n'a pas nécessairement de notion de taille ou position.
  6. //Ne pas confondre avec streamsize (sans _), qui est un typedef STL.
  7. template <typename E, typename T>
  8. inline
  9. basic_istream<E,T>::pos_type
  10. stream_size(basic_istream<E,T>& bis)
  11. {
  12. basic_istream<E,T>::pos_type savepos, lastpos;
  13. savepos= bis.tellg() ; bis.seekg(0, ios::end) ; //sauvegarder la position et aller en fin
  14. lastpos= bis.tellg() ; bis.seekg(savepos    ) ; //lire la taille et rétablir la position
  15. return lastpos;
  16. }
  17. template <typename E, typename T>
  18. inline
  19. basic_ostream<E,T>::pos_type
  20. stream_size(basic_ostream<E,T>& bos)
  21. {
  22. basic_ostream<E,T>::pos_type savepos, lastpos;
  23. savepos= bos.tellp() ; bos.seekp(0, ios::end) ; //sauvegarder la position et aller en fin
  24. lastpos= bos.tellp() ; bos.seekp(savepos    ) ; //lire la taille et rétablir la position
  25. return lastpos;
  26. }
  27. //L'héritage double étant ambigü, ceci force arbitrairement le mode 'input'
  28. template <typename E, typename T>
  29. inline
  30. basic_iostream<E,T>::pos_type
  31. stream_size(basic_iostream<E,T>& bios)
  32. {
  33. return stream_size(static_cast<basic_istream<E,T>&>(bios));
  34. }


Exemple d'utilisation:

Code :
  1. ifstream ifs("foo.txt" );
  2. long taillefoo= stream_size(ifs);


Message édité par Musaran le 22-03-2003 à 07:50:23

---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
n°340503
kenshiro18​2
Posté le 22-03-2003 à 19:30:32  profilanswer
 

Attention tout de meme, si tu utilises un lecteur de bande, ça va être long pour se positionner à la fin du fichier :-)
Je ne sais pas si la fonction "stat" différe selon les systèmes (même si ce n'est pas dans la norme C++ ou C), mais tu peux eventuellement l'utiliser...

n°340528
Konar
Posté le 22-03-2003 à 21:24:11  profilanswer
 

Et les fct CreateFile() (ouvre le fichier) puis GetfileSize() (recupere sa taille) et ReadFile() (lire x octets), elles sont pas bien ?

n°340543
kenshiro18​2
Posté le 22-03-2003 à 21:42:14  profilanswer
 

Konar a écrit :

Et les fct CreateFile() (ouvre le fichier) puis GetfileSize() (recupere sa taille) et ReadFile() (lire x octets), elles sont pas bien ?


La fonction "stat" est présente sur plusieurs systèmes, pas "CreateFile".

n°340584
Konar
Posté le 22-03-2003 à 23:38:12  profilanswer
 

kenshiro182 a écrit :


La fonction "stat" est présente sur plusieurs systèmes, pas "CreateFile".


 
Moui... mais on peut présumer que le portage d'une application mfc vers une application sans mfc se déroulera toujours sur plateforme win32. Dans le cas contraire, j'aimerais bien savoir quelle application mfc peut se convertir vers linux ou autres (d'ailleurs dans ce cas autant réécrire tout le prog, inutile de parler de conversion...)


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

  [C++] Lire un fichier

 

Sujets relatifs
[résolu] ouvrir un fichier au travers d'HTTPremplacer des valeurs dans un fichier existant avec un .bat
Créer un fichier Jpeg a partir d'objet "Image" ou "Graphics"[C] Comment calculer la taille d'un fichier??
Impossible de lire une imagePb ecriture dans un fichier: retour à la ligne?
lire et ecrire dans un fichierenregistrer un fichier au lieu de l'ouvrir dans le navigateur
Passer d'un fichier XML à MySQL 
Plus de sujets relatifs à : [C++] Lire un fichier


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