Может ли рекурсивная функция записать файл в C ++? - PullRequest
1 голос
/ 10 февраля 2010

У меня будет две функции класса. Первая функция класса открывает файл. Затем он вызывает вторую функцию, которая пишет в файл и рекурсивно вызывает себя. Когда вторая функция завершается, исходная функция закрывает файл.

Возможно ли это сделать?

Ответы [ 5 ]

8 голосов
/ 10 февраля 2010

Конечно, пока вы передаете дескриптор файла / объект в рекурсивную функцию:

void recursion(int data, int maxdepth, ostream &os)
{
    // must eventually break out
    if (maxdepth == 0)
        return;

    // write data
    os << data << std::endl;

    // and call one deeper
    recursion(data + 1, maxdepth - 1, os);
}

void start(const char *filename)
{
    std::ofstream os(filename);

    recursion(0, 100, os);
}
5 голосов
/ 10 февраля 2010

Да, если ваша рекурсивная функция имеет базовый регистр, она будет завершена.

func2(int p) {
  if (p == 0) return;
  //write
  func2(--p);
}

func() {
  //open file
  func2(10);
  //close file
}
5 голосов
/ 10 февраля 2010

Да, это вполне возможно.

3 голосов
/ 10 февраля 2010

Да, потому что вызовы записи являются последовательными, даже если эта последовательность определена рекурсивно.Файловый объект не видит ничего, кроме линейного набора вызовов записи, независимо.

1 голос
/ 10 февраля 2010

Да. Ничто в C ++ или файловой системе не помешает вам сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...