将 cin (c++) 重定向到 cmd 中的多个文件

Redirect cin (c++) to multiple files in cmd

我一直在寻找它,但我找不到路。基本上我有两个文件:"hello.txt" 和 "bye.txt":

hello.txt:

1 2 3 8 8

bye.txt:

9 9 8 1 2

我知道如何使用以下方法将 cin 重定向到 hello.txt

a.exe < hello.txt

所以 cin 将收到 "1 2 3 8 8"。但是我怎样才能让它从两个文件 "1 2 3 8 8 9 9 8 1 2" 接收信息。我已经尝试复制 <:

a.exe < hello.txt < bye.txt

但是没有用,我也试过这个:

a.exe < hello.txt <& bye.txt

但据我所知,它不起作用(它没有)。有任何想法吗?谢谢

如果您的系统可用,您可以为此使用 cat

cat file1 file2 file3 | a.exe

看到了live.

它与 C++ 无关。 您可以更改代码并从作为命令行提供的许多文件中读取,或者您首先将所有文件重定向到一个文件中,然后再读取该文件:

type hello.txt > tmp.txt
type bye.txt >> tmp.txt
e.exe < tmp.txt

既然你是在 Stack Overflow 上问过这个问题,而不是超级用户,这里是一个穷人的猫实现,在 C++ 中,有很大的改进空间。

#include <iostream>
#include <fstream>
int main(int argc, char** argv)
{
    for (int i = 1; i < argc; ++i)
    {
        std::ifstream fin(argv[i]);
        std::cout << fin.rdbuf();
    }
}

如果将其编译为名为 cat 的程序,则可以像这样使用它:

cat hello.txt bye.txt | a.exe

虽然我确信如果您看的话,那里有 Windows 的 cat 的适当的全功能实现。

我个人对 Windows 的偏好是切换到 Powershell 并使用 Get-Content

Get-Content hello.txt, bye.txt | a.exe