In ogni caso, normalmente quando una funzione deve lavorare genericamente su uno stream in scrittura (o in lettura), si tende a passare stream "generici" (ostream &, istream &) e già aperti nel caso che si tratti di file, in modo da poter usare la funzione su stream di più tipi, non necessariamente file (ad esempio, puoi passare alla tua funzione di scrittura un ofstream già aperto come anche cout).