2

私はOpenCVで作業してきましたが、私が見たサンプルコードのいくつかは、ファイル名を読み取るために以下を使用しています。argcは渡されたコマンドライン引数の数であり、argvは引数文字列のベクトルであることを理解していますが、次の行の各部分が何をするのかを誰かが明確にできますか?これを検索してみましたが、多くの結果が見つかりませんでした。ありがとう。

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

ありがとう。

4

4 に答える 4

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"
于 2010-06-30T17:16:00.940 に答える
2

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」は( ) へのポインターです。この属性は、「定数」である「文字列」があることを示しています。aCBacharchar *const

于 2010-06-30T17:15:49.020 に答える
1
if (argc > 1) {
  const char* imagename = argv[1];
} else {
  const char* imagename = "lena.jpg";
}

imagename(括弧の範囲外になることに同意する場合)

于 2010-06-30T17:16:45.130 に答える
1

この例は、三項演算子の使用を示しています。

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";
于 2010-06-30T17:29:50.427 に答える