Передать ссылку на поток:
void first() {
std::ifstream in("in.txt");
std::ofstream out("out.txt");
second(in, out);
out.close();
in.close();
}
void second(std::istream& in, std::ostream& out) {
// Use in and out normally.
}
Вы можете #include <iosfwd>
получить предварительные объявления для istream
и ostream
, если вам нужно объявить second
в заголовке и не хотите, чтобы файлы, содержащие этот заголовок, были загрязнены ненужными определениями.
Объекты должны передаваться не-const
ссылкой, потому что вставка (для выходных потоков) и извлечение (ввод) изменяют объект потока.