如何在C++程序中使用命令行参数
How to use command line arguments in C++ program?
我知道要使用命令行参数,我必须这样做。
int main(int argc, char* argv[])
现在,我读到的大多数关于接受命令行参数的文档都解释了这种情况,大致如下:
命令行参数在命令行操作系统,如DOS或Linux,并传递到操作系统中的程序。
因此,我知道打开我的程序的唯一方法是像往常一样正常打开它,要么开始调试,要么打开exe文件
现在看来,要使用命令行参数,程序必须以不同的方式打开,使用命令行(例如Windows命令提示符),然后在其后写入参数。
所以我的问题是
如何使用命令行打开程序,以及如何在程序名称后输入参数?
为了简单起见,我假设您使用的是Windows7。
最简单的方法是打开一个DOS框,然后拖动应用程序。这将插入可执行文件的路径。接下来,你可以开始键入你想要传递的命令行参数
C:Userscscott> "C:UserscscottDocumentsmyApp.exe" argument1 argument2
注意:正如评论中提到的,这在windows vista上不起作用,这是我在撰写本文时不知道的事实。
我假设您使用的是IDE,我会胡乱猜测它是Visual Studio。如果我是对的,有两种方法-一种是打开包含已生成的可执行文件的文件夹-默认情况下,它将位于{Solution Directory}/{Project Directory}/bin/{Build Configuration}中。在那里运行命令行。另一个选项是打开项目属性,并在"调试"选项卡下(在VS 2010中,它因版本而异)将命令行标志放在标记为"命令行参数"的框中。
参数传递给程序的一些方法:
-
打开命令提示符(如Windows上的
cmd.exe
或PowerShell),然后键入:your_program.exe arg1 arg2 arg3
您可以在快捷方式或脚本(如批处理或sh脚本)中执行相同的操作。 -
在IDE中编辑运行配置
例如,Eclipse允许您为每个运行配置分别设置命令行参数。这在开发和调试过程中很有帮助。 -
在Windows上,将文件拖放到可执行文件上。拖动文件的文件名将作为命令行参数传递。
-
在Windows上,将文件扩展名与文件类型(
assoc
命令)关联,并将该文件类型与运行程序的命令(ftype
命令)关联。现在,当在命令解释器中或通过双击等方式打开这样的文件时,在幕后发生的事情是,您的程序以该文件的路径为参数运行。 -
从另一个程序以编程方式运行可执行文件,并将参数作为变量传递
例如在Python中:subprocess.call(['my_program.exe','arg1','arg2'])
在Windows中,您必须使用命令提示符导航到可执行文件的位置,然后说Myexe.exe first_arg second_arg
即可运行它。
或者,您可以右键单击exe文件,并在文件设置中指定一些命令行参数,以便在双击打开时提供给它。
另一种方法是编写一个简单的批处理脚本,它只调用像C:/Full/Path/To/Your/Program/app.exe first_arg second_arg
这样的程序并运行它。
在Visual Studio或首选IDE中,您可以在项目设置中选择在IDE内部执行程序时为程序指定一些命令行参数。
下面是我在linux 中使用的一个简单示例
./myprogram args1 args2
你可以像这个一样解析它
int
main (int argc, char **argv)
{
if (argc >= 2) {
std::string param(argv[1]);
}
///etc
}
<path of your program> <Arguments separated by space>
您可以通过打开命令提示符和cd到路径,然后输入exe名称和参数:来完成此操作
eg: bob.exe bob dylan
你的exe是bob,两个params是bob和dylan。。。
或者你可以制作一个快捷方式,右键单击,选择属性,快捷方式并将参数添加到目标字段的末尾。
"C:bob.exe" /bob dylan
您的IDE中可能有一个选项,具体取决于它是什么。
您可以在从命令提示符启动时编写,您可以制作快捷方式并在名称后添加参数,您可以在调试时在某些IDE中添加参数,或者您可以使用某些参数将程序与其他程序进行校准。
程序即将启动。这取决于传递参数。所有常见的shell都将解析命令行(尽管并不总是以同样的方式)向您介绍论点。在Windows下,左键单击桌面上和任务中的按钮栏将打开一个配置窗口,其中有一个"快捷方式"选项卡您可以在其中输入命令行作为"目标:"。下面的rc文件Unix(在启动时执行)基本上是shell脚本文件(定时启动)也采用命令行(而不仅仅是隔离命令)。等等。
在其他上下文中,可以将文件类型(扩展名)映射到命令当您单击该类型的文件时将执行,或者下载它。在这种情况下,如果没有其他东西,你至少会得到文件的完整路径。
在少数情况下,您只能获得文件名当它会调用您的程序。
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- 使用 C++ 将命令行参数拆分为参数/向量
- 如何在OMNET++中添加专门的命令行参数?
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- atoi() 在应用于大型命令行参数时会产生不正确的值
- 命令行参数,cant 或两个变量
- 在 Windows 中使用 boost::p rogram_options 从命令行参数读取 Unicode 字符
- 如何在 Android/NDK 上将命令行参数从 gradlew.bat 传递到 Clang
- 编写一个将 LLVM IR 文件作为命令行参数的程序
- 通过命令行参数获取llvm ir文件时面临问题
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- 如何在不使用文件扩展名的情况下使用命令行参数打开C++中的文本文件?
- 命令行参数在不到 3 个 LOC 中 int?
- 在命令行参数中使用引号
- 在VS2013中使用devenv (C++)传递命令行参数argv
- 二进制数据作为命令行参数
- 如何在 C++11 中创建具有命令行参数大小的动态数组?
- 需要有关如何设置getopt_long以正确传递命令行参数的建议
- Bash 脚本和命令行参数