2010-08-19 19 views
1

Dans ce qui suit C++ fonction:Quelle est la destination de sortie d'ofstream?

void save_data(std::ofstream& csv) { 
    csv << "a message"; 
} 

Quelque chose que je ne comprends pas: si save_data est appelé, où le fait écrire? Pour un fichier? Comment exactement est-il utilisé?

+0

Sauf si vous utilisez l'argument de fonction pour ouvrir ou fermer un fichier, il devrait être '' ostream et pas '' & ofstream. – Potatoswatter

+0

avez-vous prêté suffisamment d'attention à la raison pour laquelle ce paramètre'csv 'a été déclaré comme une' référence à non-const 'ET à propos de l'opérateur < Chubsdad

Répondre

3

Un ofstream représente un fichier sur le système de fichiers:

int main() 
{ 
    ofstream file("Plop.txt"); 

    save_data(file); 
} 
+0

Incidemment, je pense que c'est probablement un mauvais choix. La méthode devrait probablement prendre un paramètre 'std :: ostream &' et permettre l'enregistrement dans n'importe quel flux, qu'il s'agisse d'un fichier, d'un tampon mémoire ou d'une socket réseau, ou ... – Steve314

+0

C'est très mauvais. Cependant, c'est la fonction du PO. – Puppy

+0

ofstream fournit un constructeur et open() au-dessus de ostream qui initialise le fichiertreambuf sous-jacent. Vous pouvez toujours utiliser ostream :: rdbuf() pour le rediriger ailleurs, pas seulement vers un fichier. Donc, cela ne représente pas nécessairement un fichier. –