1

我有一个接受三个输入的 C++ 程序:宽度整数、高度整数和文件名。现在,我像这样编译并运行程序(假设我将其命名为 prog):

>prog
// hit enter
>128 128 output.ppm

这会导致输出成功,但程序描述说正确的命令行语法是:

>prog w h filename

这就是它所说的。这是否意味着我的程序应该能够在同一行启动?也许它隐含地意味着您在输入程序名称后按回车键,但如果没有,有没有办法真正做到这一点?

4

3 回答 3

4

您的程序需要解析命令行参数。查看规范,预期的工作流程是

>prog 128 128 output.ppm
//hit enter after the parameters

这里了解更多。

于 2013-01-16T17:31:44.227 回答
3

您正在错误地解决问题。std::cin在您的程序启动后,您正在接受您的输入。您的程序规范声明输入应该作为命令的一部分给出。考虑一个类似的命令ls -l- 它-l是命令的一部分,并被传递给程序以进行解析和操作。

您需要允许prog 128 128 output.ppm运行类似的命令,以便用户键入该命令,然后按 Enter 键运行程序。如何访问 C++ 程序中的命令行参数?嗯,这就是函数的argcargv参数的main用途。您的主要功能应如下所示:

int main(int argc, char* argv[]) { ... }

The argc argument gives you the number of arguments passed in the command line (it will be 4, in the example given) which is also the size of the argv array. Each element is an argument from the command. For example, argv[0] will be "prog", argv[1] will be "128", and so on. You need to parse these values and, depending on their values, change the functionality of your program.

于 2013-01-16T17:38:31.860 回答
2

您可以通过主函数中的参数传递命令:

int main(int argc, char *argv[]) {
}

argc是参数的数量并且argv是参数的数组。

于 2013-01-16T17:37:17.500 回答