gpt4 book ai didi

c++ - 尝试在 std::cout 和 std::ifstream 之间切换

转载 作者:太空狗 更新时间:2023-10-29 23:52:07 25 4
gpt4 key购买 nike

我想从命令行确定的 std::cinstd::ifstream 读取输入。该命令看起来像 ./run 1./run 2。眼下,我必须写两个基于读取模式的几乎相似的函数。

void read1()
{
int a, b;
while (std::cin >> a >> b) {
// do something
}
}

void read2()
{
int a, b;
std::ifstream fin("file.txt");
while (fin >> a >> b) {
// do something
}
}

对于大循环来说,很难维护这两个函数,因为循环部分是通用的,唯一的区别是输入源。

如何整合这两个功能?

最佳答案

std::cinstd::ifstream 都是 std::istream,所以你可以通过使用对 std::istream 的引用进行操作的函数。这适用于 std::cinstd::ifstream 实例和任何其他 std::istreams:

void read(std::istream& input)
{
while (input >> a >> b) { .... }
}

然后切换到来电端。

if (something)
{
read(std::cin);
} else
{
isfream input(....);
read(input);
}

关于c++ - 尝试在 std::cout 和 std::ifstream 之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17290476/

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