gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 15:18:13 24 4
gpt4 key购买 nike

我需要知道如何在 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/

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