将流分配给ostream

时间:2015-03-24 05:04:29

标签: c++ iostream fstream assign

我必须写一个"登录"和#34;注销"将当前iostream从函数重定向到fstream并返回的函数。

更具体地说,我有:

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
}

程序应该像这样工作:

  • 用户输入一些命令:输出到控制台
  • 用户输入logon filename命令:创建文件并将输出重定向到该文件
  • 用户输入一些命令:输出到文件
  • 用户输入注销:关闭文件,将输出重定向回控制台 我知道ofstream是ostream的一部分,但不知道如何在两者之间进行操纵。 请帮忙,感谢任何意见。

2 个答案:

答案 0 :(得分:1)

您也可以使用std :: string作为中介:

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;
}

然后尝试使用std ::来指定标准对象。

答案 1 :(得分:0)

您可以使用字符串流作为中间人吗?

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

只是一个想法,不确定这将是多么实用