我有一个C ++程序,它接受三个输入:宽度的整数,高度的整数和文件名。现在,我编译并运行这样的程序(假设我将其命名为prog):
>prog
// hit enter
>128 128 output.ppm
这导致输出成功,但程序描述表明正确的命令行语法是:
>prog w h filename
就是这样。这是否意味着我的程序应该能够在同一行开始?也许它隐含地意味着你在输入程序名后输入了输入,但如果没有,有没有办法实际执行此操作?
答案 0 :(得分:4)
答案 1 :(得分:3)
您正在接近问题。程序启动后,您将通过std::cin
接收输入。您的程序规范声明输入应该作为命令的一部分给出。考虑像ls -l
这样的命令 - -l
是命令的一部分,并传递给程序进行解析和处理。
您需要允许运行prog 128 128 output.ppm
之类的命令,因此用户可以键入该命令,然后按Enter键运行该程序。如何访问C ++程序中的命令行参数?嗯,这就是argc
函数的argv
和main
参数的用途。您的主要功能应如下所示:
int main(int argc, char* argv[]) { ... }
argc
参数给出了命令行中传递的参数数量(在给定的示例中它将是4),它也是argv
数组的大小。每个元素都是命令的参数。例如,argv[0]
将为"prog"
,argv[1]
将为"128"
,依此类推。您需要解析这些值,并根据其值更改程序的功能。
答案 2 :(得分:2)
您可以通过main函数中的参数传递命令:
int main(int argc, char *argv[]) {
}
argc
是参数的数量,argv
是一个参数数组。