je la fonction de modèle suivant qui imprime à cout:Howto Passe descripteur de fichier à une fonction pour la sortie en streaming
template <typename T> void prn_vec(const std::vector <T>&arg, string sep="")
{
for (unsigned n = 0; n < arg.size(); n++) {
cout << arg[n] << sep;
}
return;
}
// Usage:
//prn_vec<int>(myVec,"\t");
// I tried this but it fails:
/*
template <typename T> void prn_vec_os(const std::vector <T>&arg,
string sep="",ofstream fn)
{
for (unsigned n = 0; n < arg.size(); n++) {
fn << arg[n] << sep;
}
return;
}
*/
Comment puis-je modifier pour qu'il prenne également poignée de fichiers en entrée et imprimer que fichier comme référé par le handle de fichier?
Afin que nous puissions faire quelque chose comme:
#include <fstream>
#include <vector>
#include <iostream>
int main() {
vector <int> MyVec;
MyVec.push_back(123);
MyVec.push_back(10);
ofstream myfile;
myfile.open ("example.txt");
myfile << "Writing this to a file.\n";
// prn_vec(MyVec,myfile,"\t");
myfile.close();
return 0;
}
@dirkgently: merci beaucoup. Mais pourquoi utilisez-vous "ostream & o" au lieu de "ofstream & o"? En outre dans le main j'utilise "ofstream myfile". – neversaint
ofstream est une spécialisation de ostream: Tous les streams sont des ostreams mais l'inverse n'est pas vrai. Cela est utile lorsque vous souhaitez imprimer sur un flux de chaînes ou un sérialiseur personnalisé. – dirkgently