J'ai une fonction qui obtient variable ifstream, mais je dois écrire dans ce fichier dans certaines situations. Par exemple.ifstream -> ofstream C++
main()
{
ifstream dataFile("filename.txt");
foo(dataFile);
}
void foo(ifstream &df)
{
if(df.good()) {...}
else {
//here I need to write str into the "filename.txt"
//but I don't know how to do it properly!
}
}
Comme je l'imagine, la façon la plus simple est d'obtenir le nom du fichier en quelque sorte de df dans foo() ... Mais comment?
imagine: JE NE PEUX PAS utiliser fstream. Pour une raison quelconque J'ai seulement ifstream & et ne sais pas le nom du fichier. E.g. Je reçois ifstream & à partir d'une fonction de bibliothèque fermée.
Ne pas passer un courant en valeur passe par référence. 'void foo (ifstream & df)' – andre
Pouvez-vous passer le nom de fichier en tant que paramètre à foo? Si vous le pouvez, instanciez simplement un fichier std :: ostream (filename) dans foo et travaillez avec ça. Sinon, vous pouvez remplacer ifstream par fstream (qui prend en charge les deux) en entrée et en sortie. – utnapistim
Ne pouvez-vous pas changer la fonction pour qu'elle prenne 'fstream' au lieu de' ifstream'? Un 'ifstream' est spécifiquement pour * lire * à partir d'un fichier, pas pour écrire. –