2015-03-24 2 views
1

Мне нужно написать функцию входа и выхода, которая перенаправляет текущий iostream из функции в fstream и обратно.Назначение потока для ostream

Чтобы быть более точным, у меня есть:

void console (istream& in, ostream& out) 
{ 
    //take command from user through console 
    //default input/ output stream is in/out 
} 

void logon (ostream& out, string filename) 
{ 
    ofstream fileout; 
    fileout.open(filename); 
    //assign this fstream fileout to ostream& out 
} 

void logoff (ostream& out) 
{ 
    // take current ofstream fileout 
    fileout.close(); 
    // return the stream back to out 
} 

Программа должна работать так:

  • Пользователь ввести некоторые команды: Вывод на консоль
  • пользователя введите команду входа в имя файла: создать файл и перенаправление вывода в этот файл
  • Пользователь вводит некоторые команды: Выход в файл
  • User enter logoff: Закрыть файл, перенаправить вывод обратно на консоль Я знаю, что из потока является частью потока, но не знаю, как манипулировать между ними. Пожалуйста, помогите, любой ввод оценивается.

ответ

0

Можете ли вы использовать струнный поток в качестве посредника?

stringstream ss; 
while ofstream has data 
    ofstream >> ss 
    ostream << ss 
.... 

Просто идея, не знаю, как практические это будет

1

Вы также можете использовать зЬй :: строку в качестве посредника:

void consoleIn (std::istream& in, std::string& strInput) 
{ 
in >> strInput; 
} 

void logon (std::ostream& out, std::string filename, std::string const& MyText) 
{ 
std::ofstream fileout; 
fileout.open(filename); 
fileout << MyText; 
} 

И кстати попробовать использовать зЬй :: для указания стандартных объектов.

Смежные вопросы