0

我有一个 C++ 代码

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

然后有如下命令:

myfile.getline(inp,256);

问题:如何修改myfile.open("input"),以便与而不是myfile相关联?cin"input"

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

声明myfile=cin不编译。

4

4 回答 4

3

请改用istream&参考:

std::istream& myfile(std::cin);
于 2012-09-23T19:54:47.207 回答
2

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

于 2012-09-23T19:56:01.270 回答
1

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

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

然后你可以用任何 std::ifstream 和 std::cin 调用这个函数:

std::ifstream myfile;
...
process_data( myfile );
process_data( std::cin );
于 2012-09-23T19:56:49.980 回答
0

如果您坚持使用 anstd::ifstream您可以替换std::streambufbase std::istreamstd::ifstream重载rdbuf(),因此您不能直接使用它):

std::ifstream file;
if (use_cin) {
    file.std::istream::rdbuf(std::cin.rdbuf());
}
于 2012-09-23T20:32:16.560 回答