【发布时间】:2021-02-05 00:05:41
【问题描述】:
我正在制作一个以 3 种方式接收输入的程序:
- 键盘(通过 cin)
- 文件(通过 cmd 行给出的参数)
- 和来自文件重定向的输入。
我正在做一个 if-else 语句,其中第一部分测试 cmd 行是否有 arg 以及没有给出文件时是否有 else 。现在我只是想找出如何制作一个 if 语句来检测输入是否来自文件重定向。谢谢
我正在尝试做的示例:
if(argc > 1) {
//process file
}
else if(/*test for file redirect*/){
//process input from file redirect
}
else {
//process standard input
}
【问题讨论】:
-
为什么需要区分重定向和键盘?它们都将通过进程的 STDIN 提供数据,因此
std::cin可以读取,因此只需以相同的方式处理它们。事实上,您可能会考虑将您的处理转移到一个单独的函数中,该函数将std::istream&作为输入。当给出命令行 arg 时,打开std::ifstream并将其传递给函数。否则将std::cin传递给函数。 -
当数据来自文件重定向时,我只需要执行不同的操作。就这些
标签: c++ file io-redirection