声明输入流

declaring input stream

本文关键字:输入流 声明      更新时间:2023-10-16

我有一个C++代码

ifstream myfile;
myfile.open("input");

然后具有如下命令:

myfile.getline(inp,256);

问:如何修改myfile.open("input"),以便myfilecin关联而不是"input"

我不想将所有myfile.getline命令更改为cin.getline.

声明myfile=cin不会编译。

请改用istream&引用:

std::istream& myfile(std::cin);

将其分离成一个函数,并将std::istream&作为参数。然后,您可以根据需要在std::cinmyfile上执行。

您可以将代码放入一个引用 std::istream 的函数中,例如

void process_data( std::istream & istr )
{ ... }

然后,您可以使用任何 std::ifstream 和 std::cin 调用此函数:

std::ifstream myfile;
...
process_data( myfile );
process_data( std::cin );

如果你坚持使用std::ifstream你可以替换基本std::istreamstd::streambufstd::ifstream重载rdbuf()所以你不能直接使用它):

std::ifstream file;
if (use_cin) {
    file.std::istream::rdbuf(std::cin.rdbuf());
}