私のコマンドラインはa.out -a 3eF6
argv [2]にアクセスすると、3eF6(これはcharの配列だと思いますか?)を取得します。これをループして、すべてのcharが整数であり、「e」のようなアルファ値ではないことを確認するにはどうすればよいですか。または「F」?
どのように/私はそれを文字列に変えるでしょうか?
私がそうする場合a = atoi(argv[2])
、ここargv[2]
で32、次にa = 32であることを知っています。また、argv[2]
が3eF6の場合、次の結果が「間違った入力」にならないことも知っています。
a = 0;
a = atoi(argv[2])
if( a = 0 )
cout << "wrong input";
代わりに、a
3と評価されます。したがって、このインスタンスでは最初の整数のみが読み取られますが、引数3eF6全体にアクセスできるようにしたいと思います。
atoi(getline(argv [2]、a)などを使用してみましたが、何らかの理由で文字列をconstcharに変換できないというエラーが表示されます。
とにかく、argv [2]を解析可能な文字列に変換するにはどうすればよいですか?または、argv [2]の各文字にアクセスするにはどうすればよいですか?
私も試しました:
string string1 = argv[i+1] // argv[i] is an option like -a
しかし、引数を指定してプログラムを実行すると、次のエラーが発生します。
./a.out -b 2 -a 2 -s 2 -t 8
'std :: logic_error'のインスタンスをスローした後に呼び出された終了what():basic_string :: _ S_construct NULLが無効です中止(コアダンプ)