gpt4 book ai didi

c++ - 我可以将 ifstream 重定向到 cin 吗?

转载 作者:太空狗 更新时间:2023-10-29 23:32:34 28 4
gpt4 key购买 nike

我有一个从终端读取输入的程序,来自 cin 的流在多个类中用于在不同级别进行解析。

我不想使用 cin 从终端获取数据,而是想读入一个包含我需要解析的信息的文件,但我不想修改我所有的标题和.cpp 文件以接受 ifstream& 参数。

为了保留现有代码,我尝试简单地将 ifstream 重定向到 cin,但不知道如何操作。

所以假设我在 main 中有以下内容:

ifstream inFile("myfile.txt", ifstream::io);

string line;
while(getline(inFile, line))
{
char firstChar;
inFile >> firstChar;
cout << firstChar;
inFile.ios::rdbuf(cin.rdbuf());
Continue myFile;
}

在我的 continue.cpp 中,我正在做:

Continue()
{
string line;
cin >> line;
cout << "---remaining line: " << line << "\n";
}

但是它只打印 main 的第一个字符。

最佳答案

简单地交换指向 std::streambuf 的指针:

ifstream file("myfile.txt");
string line;
if (file.is_open()) {
cin.rdbuf(file.rdbuf()); // swap
cin >> line;
}
std::cout << line;

关于c++ - 我可以将 ifstream 重定向到 cin 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35796410/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com