Posez votre question Signaler

Fichiers en c++

Maryy - Dernière réponse le 9 déc 2007 à 23:28
Bonjour !

Et une question de petite débutante en c++, une !

Voilà, je voudrais gérer des fichiers en c++ mais je ne trouve pas d'info à ce sujet. Déjà, je n'arrive pas à lire mon fichier dans une forme structurée comme je faisais en C grâce aux structures. Je travaille avec des classes, peuvent-elles tenir lieu de structures ? Est-ce que je peux utiliser fread et fwrite comme en C (est-ce que ça se fait ?) ? Ou que dois-je utiliser à la place ?

D'avance, merci beaucoup de votre aide.
Lire la suite 

Fichiers en c++ »

Suggestions
6 réponses
Réponse
+0
moins plus
Il me semble que fread et fwrite fonctionne de la meme maniere en C et en C++.
Les classes peuvent tenir lieu de structure mais tu y perds l'interet de programmer en oriente objet(la question se resume alors a pourquoi utiliser le C++ si je n'ai pas besoin de l'objet...)
a+
dje-dje
maryy - 17 avr 2002 à 11:04
En fait, je voudrais garder l'esprit objet, je ne veux pas faire une appli objet avec des fonctions que l'on utilise en C, c'est clair que ça y perdrait tout son intérêt.

J'ai trouvé ça :
fout.write((char*) &nom_objet, sizeof nom_objet);

Mais j'ai pas réussi à l'utiliser, en plus, les chaînes de caractères me posent pas mal de problèmes. M'enfin, pour les fichiers, ça reste assez mystérieux pour moi :)

Merci en tout cas !
Ajouter un commentaire
Réponse
+0
moins plus
bon voila :
fichier de type :
ifstream : on n p qu'y ecrire
ofstream : on n p qu'y lire
fstream : on p y lire et y ecrire.
sinon, ds ta classe, tu p declarer un fichier de type FILE *
et reecrire les focntions fwrite et fread pour ta classe.
si t'as le msdn, ds index ecris fstream et t'auras toutes les infos, sinon, dis le moi et je t'envoies tout en mode text par mail
tafiscobar
maryy - 17 avr 2002 à 11:35
Merci beaucoup, je vais m'y atteler :)
Ajouter un commentaire
Réponse
+0
moins plus
g une intéro ce mardi mé je sé pa manipulé les fichiers en c++
donc je voudré bien kon maide 1 ti peu
merci
Ajouter un commentaire
Réponse
+0
moins plus
Pour du C++ plus besoin de fopen ou de FILE * tu peux te contenter d'utiliser des flux. Grosso modo tu as deux familles de flux :

1) les flux ouvert en lecture : (vois ça comme un FILE * ouverte avec un fopen(...,"r")) : c'est la classe std::istream. Un std::istream comporte en particulier std::cin (entrée standard, stdin en C) et les std::ifstream (fichier ouverts en lecture).

2) les flux ouvert en écriture : c'est la classe std::ostream. Parmi les std::ostream tu as std::cout (sortie standard, stdout en C), std::cerr (sortie d'erreur standard, stderr en C), et les std::ofstream.

Tu as 4 headers principaux pour manipuler des flux :
#include <istream> // inclue juste la classe std::istream
#include <ostream> // inclue juste la classe std::ostream
#include <fstream> // inclue les std::ofstream et std::ifstream
#include <iostream> // inclue istream, ostream, et configure std::cout et std::cerr

Pour manipuler un flux :

1) il faut commencer par l'ouvrir (avec le constructeur) si tu veux manipuler un flux autre que std::cin, std::cerr, std::cout
2) ensuite il faut tester si le flux est correctement ouvert (il suffit de passer le flux dans un if)
3) s'il est ouvert tu peux le manipuler (opérateur << pour écrire dans un flux, opérateur >> pour lire dans un flux)
4) une fois terminé, et si ce flux s'est ouvert avec succès, tu es sensé fermer le flux (méthode close() ).

Un exemple concret :
#include <fstream>
#include <iostream>

int main(){
    const char *filename = "plop.txt";
    std::ofstream ofs(filename);
    if(ofs){
        std::cout << "Ecriture de " << filename << std::endl;
        ofs << "plop !" << std::endl;
        ofs.close();
    }else{
        std::cerr << "Impossible d'ouvrir " << filename
            << " en écriture !" << std::endl;
    }
    return 0;
}

Bonne chance
Ajouter un commentaire
Ce document intitulé « fichiers en c++ » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook