#include #include <fstream> #include <sstream> void write(std::ostream& out, const std::string& msg) { out << msg << std::endl; } int main() { // Sur la sortie standard write(std::cout, "Kikoo in cout"); // Sur la sortie d'erreur write(std::cerr, "Kikoo in cerr"); // Dans un buffer de chaine de caractere std::ostringstream ss; write(ss, "Kikoo in string stream"); std::cout << ss.str() << std::endl; // Dans un fichier std::ofstream file("toto.txt"); write(file, "Kikoo in file"); return 0; }
using namespace std;
En prenant un peu de recul et grâce à ton commentaire, je m'aperçois qu'il vaudrait mieux faire une methode privée getData(<type de sortie>) qui effectue le traitement, et deux methodes publiques qui appellent getData avec au choix la sortie standard ou un fichier en paramètre. Malheureusement, je suis encore un peu léger en c++, donc si tu as une petite suggestion à me donner... elle sera la bienvenue.
Pourrais-tu me dire si tu connais un type de paramètres qui me permettrait d'appeler une fonction en lui passant soit la sortie standard, soit un fichier de sortie ?
private: void write(std::ostream& out, const std::string& msg) const; public: void writeFile(const std::string& filename, const std::string& msg) const { std::ofstream file(filename); // std::ios::append pour ne pas ecraser, cf la doc d'ofstream write(file, msg); file.close(); } void writeOutput(const std::string& msg) const { write(std::cout, msg); } void writError(const std::string& msg) const { write(std::cerr, msg); }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question