我一直在使用OpenCV,我见过的一些示例代码使用以下内容来读取文件名。我知道argc是传递的命令行参数的数量,而argv是参数字符串的向量,但有人可以澄清下一行的每个部分的作用吗?我试过搜索这个,但没有找到很多结果。感谢。
const char* imagename = argc > 1 ? argv[1] : "lena.jpg";
感谢。
答案 0 :(得分:6)
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"
答案 1 :(得分:2)
如果argc大于1,则将argv[1]
中保存的指针(即命令行中给出的第一个参数)分配给imagename;否则(argc不大于1),指定一个默认值“lena.jpg”。
它使用三元运算符?:
。这是以这种方式使用的:CONDITION ? A : B
,可以读作
if (CONDITION)
A
else
B
如果a = C ? A : B
为真,a
会将A分配给C
,否则会将B
分配给a
。在这种特定情况下,“A”和“B”是指向char
(char *
)的指针; const
属性表示我们的“字符串”是“常量”。
答案 2 :(得分:1)
if (argc > 1) {
const char* imagename = argv[1];
} else {
const char* imagename = "lena.jpg";
}
(如果我们同意imagename
可以超出括号范围)
答案 3 :(得分:1)
该示例显示了使用三元运算符。
const char * imagename = argc> 1:argv [1]:“lana.jpg” 通过三元,你可以说这个表达式有三个成员。
第一个成员是条件表达式
如果条件表达式为真,则第二个成员是可以分配给imagename的值。
如果条件表达式为false,则第三个成员是可以分配给imagename的值。
此示例可以翻译为:
const char* imagename;
if(argc > 1)
imagename = argv[1];
else
imagename = "lana.jpg";