如何在 C++ 程序中使用命令行参数?

Posted

技术标签:

【中文标题】如何在 C++ 程序中使用命令行参数?【英文标题】:How to use command line arguments in C++ program? 【发布时间】:2012-08-30 09:23:32 【问题描述】:

我知道要使用命令行参数,我必须这样做。

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

现在我读到的大多数关于接受命令行参数的文档都解释了这种情况,如下所示:

命令行参数在程序名之后给出 命令行操作系统,如 DOS 或 Linux,并传递给 来自操作系统的程序。

所以我知道打开程序的唯一方法就是像我一样正常打开它,开始调试或打开 exe 文件

现在看来,要使用命令行参数,程序必须以不同的方式打开,使用命令行(例如 Windows 命令提示符),然后在其后写入参数。

所以我的问题是

如何使用命令行打开我的程序,如何在程序名称后输入参数?

【问题讨论】:

稍微不相关,但如果您需要在命令行解析中进行任何繁重的工作,您应该研究 Boost Program_options 库。使标志的重新排序和定义功能变得非常简单。 【参考方案1】:

为简单起见,我假设您使用的是 Windows 7。

最简单的方法是打开一个 DOS 框,然后将应用程序拖放到它上面。这将插入可执行文件的路径。之后,您可以开始输入您希望传递的命令行参数。它最终应该看起来像这样:

C:\Users\cscott> "C:\Users\cscott\Documents\myApp.exe" argument1 argument2

注意:正如 cmets 中所述,这在 windows vista 上不起作用,我在撰写本文时并不知道这一事实。

【讨论】:

如果你自己输入(并且你的文件夹中没有空格),你不需要引号,但是如果你把它拖放到提示符中,它会自动插入他们,以防万一。 为什么要重写这部分 C:\Users\cscott 你不会的。我只是在我的命令提示符下向你展示它的样子。 所以如果我手动编写它,我应该像这样 \Documents\myApp.exe 还是像这样 Documents\myApp.exe 开始 C:\Users\cscott> 部分告诉我当前所在的目录。我可以通过键入 cd directory_name 来更改它。所以,我也可以输入 cd Documents 然后输入 myApp.exe arg1 并得到相同的结果。【参考方案2】:

将参数传递给程序的一些方法:

打开您的命令提示符(如cmd.exe 或Windows 上的PowerShell),然后键入: your_program.exe arg1 arg2 arg3. 您可以在快捷方式或脚本(如批处理或 sh 脚本)中执行相同的操作。

在 IDE 中编辑运行配置。 例如,Eclipse 允许您为每个运行配置分别设置命令行参数。这在开发和调试过程中很有帮助。

在 Windows 上,拖放文件到可执行文件上。拖动文件的文件名将作为命令行参数传递。

在 Windows 上,将文件扩展名与文件类型(assoc 命令)相关联,并将该文件类型与运行程序的命令(ftype 命令)相关联。现在,当打开这样的文件时,无论是在命令解释器中还是通过例如双击,幕后发生的事情是您的程序以该文件的路径作为参数运行。

以编程方式从另一个程序运行您的可执行文件,并将参数作为变量传递。 例如在 Python 中:subprocess.call(['my_program.exe','arg1','arg2'])

【讨论】:

在 Visual Studio 2008 中,命令参数位于项目属性->配置属性->调试->命令参数中。 (此处省略文件名) @MooingDuck 我遵循与您建议的相同程序,但是如何输入文件夹的路径,为我的不同类别的文件夹,如D:\oranges\; 用于一个文件夹和其他D:\mangoes\; 等这样的? @Ahmad:我不确定你在问什么。如果要传递多个参数,请使用"D:\oranges\" "D:\mangos\" @MooingDuck 两个参数之间应该有space; @Ahmad:命令行参数用空格分隔。如果参数包含空格,请将其括在引号中。此页面上的每个答案都清楚地表明了这一点。【参考方案3】:

有东西要启动你的程序。这取决于那件事 传递它的论点。所有常用的 shell 都会解析命令行 (尽管并不总是以相同的方式)向您展示论点。 在 Windows 下,左键单击桌面和任务中的按钮 栏将打开一个配置窗口,其中有一个“快捷方式”选项卡 您可以在其中输入命令行作为“目标:”。下的rc文件 Unix(在启动时执行)基本上是 shell 脚本,而 cron 文件(定时启动)也需要一个命令行(而不仅仅是一个 孤立的命令)。等等。

在其他情况下,您可以将文件类型(扩展名)映射到命令 当您单击该类型的文件时将执行该操作,或者 下载它。在这种情况下,如果不出意外,你至少会得到 文件的完整路径。

在少数情况下您只能获取文件名,它是 相当容易编写自己的 shell 脚本来添加额外的参数 它会调用你的程序。

【讨论】:

【参考方案4】:

我假设您使用的是 IDE,我会大胆猜测它是 Visual Studio。如果我是对的,有两种方法 - 一种,打开包含已构建可执行文件的文件夹 - 默认情况下它将位于 Solution Directory/Project Directory/bin/Build Configuration 中。在那里运行命令行。另一个选项是打开项目属性,然后在“调试”选项卡下(在 VS 2010 - 它因版本而异)将您的命令行标志放在标有“命令行参数”的框中。

【讨论】:

【参考方案5】:

您可以在从命令提示符启动时编写,您可以创建快捷方式并在名称后添加参数,您可以在调试时在某些 IDE 中添加参数,或者您可以使用某些参数与其他程序一起调用您的程序。

【讨论】:

【参考方案6】:

这是我在 linux 中使用的一个简单示例

./myprogram args1 args2

你可以像这样解析它

int
main (int argc, char **argv)

  if (argc >= 2) 
     std::string param(argv[1]);
  
  ///etc

【讨论】:

【参考方案7】:

在 Windows 中,您必须使用命令提示符导航到您的可执行位置,并且可以通过说 Myexe.exe first_arg second_arg 来运行它。

或者,您可以右键单击您的 exe 文件,并在文件设置中指定一些命令行参数,以便在双击打开它时提供给它。

另一种方法是编写一个简单的批处理脚本,像C:/Full/Path/To/Your/Program/app.exe first_arg second_arg 这样调用你的程序并运行它。

在 Visual Studio 或您首选的 IDE 中,您可以在项目设置中选择从 IDE 内部执行时为您的程序指定一些命令行参数。

【讨论】:

【参考方案8】:

您可以通过打开命令提示符并 cd 到路径并输入 exe 名称后跟参数来执行此操作:

 eg: bob.exe bob dylan

你的 exe 是 bob,两个参数是 bob 和 dylan...

...或者您可以创建快捷方式并右键单击,选择属性,快捷方式并将参数添加到目标字段的末尾。

"C:\bob.exe" /bob dylan

根据具体情况,您的 IDE 中可能有一个选项。

【讨论】:

【参考方案9】:
<path of your program> <Arguments separated by space>

【讨论】:

以上是关于如何在 C++ 程序中使用命令行参数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在C++中解析命令行参数

什么是命令行参数?本人是c++菜鸟

vs2010 怎么给c++项目预设命令行参数

C++ 如何将命令行参数转换为数组?

在 C++ Windows 应用程序中访问命令行参数

在 C++ 中解析命令行参数? [关闭]