将 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
我一直在寻找它,但我找不到路。基本上我有两个文件:"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