2013-04-20 2 views
2

У меня есть функция типа void, отображающая пару целых чисел на консоли. Я хочу, чтобы эти целые числа записывались в файл. Это функция, я говорю:Запись в файл - void issue

void inorder(node *root) 
{ 
    if(root) 
    { 
     inorder(root->left); 
     std::cout << root->key << " "; 
     inorder(root->right); 
    } 
} 

Я знаю о том, что можно было сделать, если бы я вернуть массив целых чисел. Но это осложнило бы мой код, мне пришлось бы добавить какой-то аргумент count и т. Д.

Можно ли записать результат этой функции в файл?

ответ

3

Вы могли бы тривиальным изменить функцию взять ссылку на std::ostream, а затем передать ему ofstream или std::cout в зависимости от того, хотите ли вы, чтобы записать в файл или на стандартный вывод:

void inorder(node *root, std::ostream& os) 
{ 
    if(root) 
    { 
    inorder(root->left, os); 
    os << root->key << " "; 
    inorder(root->right, os); 
    } 
} 

затем

node* root = ....; 

// write to stdout 
inorder(root, std::cout); 

// write to a file 
std::ofstream myfile("myfile.txt"); 
inordet(root, myfile); 
+0

Я понимаю, что вы имеете в виду, он работает, спасибо. В конце концов, если мне придется разрешить вывод этого на консоль, я мог бы сделать функцию перегрузки ... – user2252786

+2

@ user2252786 Почему перегрузка? 'inorder (root, std :: cout)' уже выводит консоль. – Angew