私はOpenCVで作業してきましたが、私が見たサンプルコードのいくつかは、ファイル名を読み取るために以下を使用しています。argcは渡されたコマンドライン引数の数であり、argvは引数文字列のベクトルであることを理解していますが、次の行の各部分が何をするのかを誰かが明確にできますか?これを検索してみましたが、多くの結果が見つかりませんでした。ありがとう。
const char* imagename = argc > 1 ? argv[1] : "lena.jpg";
ありがとう。
私は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 より大きい場合、保持されているポインタargv[1]
(つまり、コマンド ラインで指定された最初の引数) を imagename に割り当てます。それ以外の場合 (argc が 1 より大きくない場合)、デフォルト値 "lena.jpg" が割り当てられます。
三項演算子を使用します?:
。これは次のように使用されますCONDITION ? A : B
。
if (CONDITION)
A
else
B
したがって、が true の場合a = C ? A : B
に A を割り当て、そうでない場合は に割り当てます。この特定のケースでは、「A」と「B」は( ) へのポインターです。この属性は、「定数」である「文字列」があることを示しています。a
C
B
a
char
char *
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" 三項で表すと、この式には 3 つのメンバーがあると言えます。
最初のメンバーは条件式です
2 番目のメンバーは、条件式が true の場合に imagename に割り当てることができる値です。
3 番目のメンバーは、条件式が false の場合に imagename に割り当てることができる値です。
この例は、次のように変換できます。
const char* imagename;
if(argc > 1)
imagename = argv[1];
else
imagename = "lana.jpg";