Rechercher : dans
Par :

Fichiers en c++

Dernière réponse le 9 déc 2007 à 23:28:58 Maryy, le 15 avr 2002 à 18:42:33 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « fichiers en c++ » dans :
Fichier Hosts ou Lhosts : modification impossible VoirMessages d'erreur : Ces messages d'erreurs apparaissent lorsque vous essayez de modifier le fichier Hosts (ou Lmhosts) dans Microsoft Windows Vista depuis un compte administrateur : Accès à C:\Windows\System32\drivers\etc\ hosts refuséou...
Entrées/sorties : Les flux en C++ VoirEntrées/sorties : les flux en C++ 1. Ouvrir un fichier en lecture 1.1 Ouverture du fichier "donnees.txt" en lecture 1.2 Lecture du contenu de "donnees.txt" 2. Ouvrir un fichier en écriture 2.1 Ouverture du fichier "donnees.txt" en...
[Shell] Créer un fichier vide VoirPour créer un fichier vide, il vous suffit de taper la commande suivante : > fichier Vous pouvez également utiliser la commande touch : touch fichier
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...

1

dje-dje, le 17 avr 2002 à 10:34:50

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

Répondre à dje-dje

2

maryy, le 17 avr 2002 à 11:04:26

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 !

Répondre à maryy

3

tafiscobar, le 17 avr 2002 à 11:14:01

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

Répondre à tafiscobar

4

maryy, le 17 avr 2002 à 11:35:57

Merci beaucoup, je vais m'y atteler :)

Répondre à maryy

5

ichou12, le 9 déc 2007 à 17:54:36

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

Répondre à ichou12

6

 mamiemando, le 9 déc 2007 à 23:28:58

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

Répondre à mamiemando