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