我有一个 C++ 代码
ifstream myfile;
myfile.open("input");
然后有如下命令:
myfile.getline(inp,256);
问题:如何修改myfile.open("input")
,以便与而不是myfile
相关联?cin
"input"
我不想将所有myfile.getline
命令更改为cin.getline
.
声明myfile=cin
不编译。
我有一个 C++ 代码
ifstream myfile;
myfile.open("input");
然后有如下命令:
myfile.getline(inp,256);
问题:如何修改myfile.open("input")
,以便与而不是myfile
相关联?cin
"input"
我不想将所有myfile.getline
命令更改为cin.getline
.
声明myfile=cin
不编译。
请改用istream&
参考:
std::istream& myfile(std::cin);
将其分离成一个函数并将其std::istream&
作为参数。std::cin
然后,您可以根据需要执行两者myfile
。
您可以将代码放入一个引用 std::istream 的函数中,例如
void process_data( std::istream & istr )
{ ... }
然后你可以用任何 std::ifstream 和 std::cin 调用这个函数:
std::ifstream myfile;
...
process_data( myfile );
process_data( std::cin );
如果您坚持使用 anstd::ifstream
您可以替换std::streambuf
base std::istream
(std::ifstream
重载rdbuf()
,因此您不能直接使用它):
std::ifstream file;
if (use_cin) {
file.std::istream::rdbuf(std::cin.rdbuf());
}