number = static_cast<int>(argv[1]);
エラー: static_cast を使用して char* から int に変換することはできません。
Googleで理由を見つけようとしましたが、見つけられないようです。また、argv[1] は数値であるため、ASCII 値を取得したくありません。
例 ./prog 15
cout << 数; // 15 を出力するようにします。
これを使用できます:std::stoi
関数。それは完全C++
に、C ライブラリから借用したようなものではありませんatoi
..
number=std::stoi( argv[1])
cout<<number;
または、あなたの目標が単に印刷することである場合:
cout<<argv[1];
十分です。
あなたの方法がうまくいかないのはなぜですか?:
argv[1]
への型のポインタであるをキャストしようとしていたchar *
ためint
、これは違法です。これを行っても、すぐに整数に変換されるわけではありません。文字列を整数に変換するには、文字列を文字ごとに反復する必要があります。std::stoi
それが、またはのようなライブラリ関数で実際に行われていることatoi
です。
に変換char *
できませんint
。「文字列」を数値に変換しようとしていますが、これは static_cast では不可能です。
文字列を数値に変換するには、次のような関数を使用する必要がありますatoi()
あなたが探しているものは次のとおりです。
#include <cstdlib>
// ...
number = atoi(argv[1]);
引数は文字列として渡されるため、そうするとエラーになります。したがって、得られるのはcharへのポインタです。int に変換するには、atoi などの変換関数を使用する必要があります。
であるためargv[1]
、char *
ではありませんchar
。おそらく、その文字の 1 つにアクセスするつもりだったのでしょうargv[1][0]
。