C++ 以<输入文件和>输出文件启动程序

标签 c++ file input command-line output

我需要知道如何在 C++ 中使用 Unix 参数 < 和 > 如果我用 ./program < input file > output file 运行程序有人告诉我程序将从 < 后面声明的文件中读取它将写出到在 > 之后声明的文件

实际代码是这样的

int main(int argc, char** argv) {

FILE* filein = fopen(argv[1], "r");
FILE* fileout = fopen(argv[2], "w");

...

所以我想把我在程序开始处理时声明的文件放在这里,因为我要使用 fileinfileout稍后在程序中。

我只能使用 stdio.h所以请保持基本。

提前致谢

最佳答案

这个 shell cmd 语法

./program < input_file > output_file

不必对传递给 main 的参数做任何事情

int main(int argc, char** argv) {

上述输入输出文件可以引用std::cinstd::cout

这是一个 shell 功能,称为标准输入/输出流重定向。如果你想通过 argv 将额外的参数传递给你的程序,你通常会使用以下语法

./program -x --opt1 < input_file > output_file

如你所说

"I'm only allowed to work with the stdio.h so please keep it basic."

在这种情况下,您可以使用预定义的 stdin/stdout宏。

FILE* filein = stdin;
FILE* fileout = stdout;

这是你应该使用的默认值。如果你想拥有额外的功能,即用户指定特定的输入/输出文件名作为程序参数,你还应该检查传递给你的 main 的命令行参数:

int main(int argc, char* argv[]) {
    FILE* filein = stdin;
    FILE* fileout = stdout;

    if(argc > 1) {
        filein = fopen(argv[1], "r");
    }
    if(argc > 2) {
        fileout = fopen(argv[2], "w");
    }
}

默认情况下,您的程序从标准输入读取并写入标准输出,如果按上述方式完成的话。因此,只需调用不带任何参数的程序,就会提示用户输入内容。

这是实现控制台程序的首选且最灵活的样式,它应该处理流式输入并转换(处理)到任何输出。

关于C++ 以<输入文件和>输出文件启动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26564208/

相关文章:

c++ - boost filesystem::path 构造函数 std::length_error

c++ - 交错 std::map 插入和迭代

c# - 如何解析具有交替名称行和整数列表的文本文件?

c - 在 C 套接字编程中使用 C FILE 流

c++ - 带有未知输出文件的 CMake ADD_CUSTOM_COMMAND

c++ - 没有 Dijkstra 的最短路径

c - fgetc 打印错误的字符到控制台

c - 使用管道或重定向时 Ncurses 闪烁

JavaScript:尝试理解计算指数值的递归函数的 Else 语句

C++顺序读取多个输入文件