繁体   English   中英

处理命令行参数

[英]Processing command line argument

我一直在使用OpenCV,我见过的一些示例代码使用以下内容来读取文件名。 我知道argc是传递的命令行参数的数量,而argv是参数字符串的向量,但有人可以澄清下一行的每个部分的作用吗? 我试过搜索这个,但没有找到很多结果。 谢谢。

const char* imagename = argc > 1 ? argv[1] : "lena.jpg";

谢谢。

const char* imagename =  // assign the string to the variable 'image_name'
       argc > 1          // if there is more than one cmd line argument (the first is always the program name)
       ? argv[1]         // use the first argument after the program name
       : "lena.jpg";     // otherwise use the default name of "lena.jpg"

如果argc大于1,则为imagename指定argv[1]保存的指针(即命令行中给出的第一个参数); 否则(argc不大于1),指定默认值“lena.jpg”。

它使用三元运算符?: 这是用这种方式: CONDITION ? A : B CONDITION ? A : B ,可以读作

if (CONDITION)
  A
else
  B

a = C ? A : B a = C ? A : B A分配给a如果C为真,否则分配Ba 在这种特定情况下,“A”和“B”是指向charchar * )的指针; const属性表示我们有“常量”的“字符串”。

if (argc > 1) {
  const char* imagename = argv[1];
} else {
  const char* imagename = "lena.jpg";
}

(如果我们同意imagename可以超出括号的范围)

该示例显示了三元运算符的使用。

const char * imagename = argc> 1:argv [1]:“lana.jpg”通过三元,你可以说这个表达式有三个成员。

第一个成员是条件表达式

如果条件表达式为true,则第二个成员是可以分配给imagename的值。

如果条件表达式为false,则第三个成员是可以分配给imagename的值。

这个例子可以翻译成:

const char* imagename;
if(argc > 1)
    imagename = argv[1];
else
    imagename = "lana.jpg";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM