私は、ユーザーからのオプションを処理するプログラムと、getoptを使用してプログラムされた関数を記述しています。私の質問は、ユーザーが無効なオプションを入力した場合、どのようにエラーを表示するのですか?また、エラーメッセージに表示するために変数にアクセスする必要があります。ここに私のコードのスナップショットです:getoptを使用したコマンドラインユーザーの引数へのアクセス
#include <unistd.h>
#include <iostream>
int main(int argc, char **argv)
{
enum {
WHOLE, PREFIX, ANYWHERE, SUFFIX, EMBEDDED
} mode;
bool reverse_match = false;
bool ignore_case = false;
bool specify_length = false;
int c;
while ((c = getopt(argc, argv, "wpsavein:")) != -1) {
switch (c) {
case '?':
std::cerr << "Unrecognised option " << std::endl;
std::cerr << "Usage: match [-OPTION]... PATTERN [FILENAME]..." << std::endl;
return 2;
break;
case 'w': // pattern matches whole word
mode = WHOLE;
break;
case 'p': // pattern matches prefix
mode = PREFIX;
//cout << "test: " << optarg << endl;
break;
case 'a': // pattern matches anywhere
mode = ANYWHERE;
break;
case 's': // pattern matches suffix
mode = SUFFIX;
break;
case 'v': // reverse sense of match
reverse_match = true;
break;
case 'e': // pattern matches anywhere
mode = EMBEDDED;
break;
case 'i': // ignore case
ignore_case = true;
break;
case 'n': // specifies length of match
specify_length = true;
}
}
}
私はエラーを表示するようにcerr
ストリームを使用しますが、私はそれはまた、ユーザーの入力を含めるようにしたいと思います。ユーザー入力-t
場合たとえば、エラーは次のようになります。
Unrecognised option -t
Usage: match [-OPTION]... PATTERN [FILENAME]...
私は何を取得していますが次のとおりです。
invalid option -- 't'
Unrecognised option -t
Usage: match [-OPTION]... PATTERN [FILENAME]...
私はinvalid option -- 't'
がデフォルトですが、私は変更またはできる方法があると信じてそれを含まない?また、ユーザー指定のオプションにアクセスできますか? getoptのから
あなたは 'getopt'のマニュアルページを読みしようとしています。これらの質問すべてに答えます。 –
これを実現するには、 'optopt'と' opterr'を読むことができます。 [マンページを見る](https://linux.die.net/man/3/getopt) –