-5
number = static_cast<int>(argv[1]);

エラー: static_cast を使用して char* から int に変換することはできません。

Googleで理由を見つけようとしましたが、見つけられないようです。また、argv[1] は数値であるため、ASCII 値を取得したくありません。

例 ./prog 15

cout << 数; // 15 を出力するようにします。

4

6 に答える 6

4

これを使用できます:std::stoi関数。それは完全C++に、C ライブラリから借用したようなものではありませんatoi..

 number=std::stoi( argv[1])
 cout<<number;

または、あなたの目標が単に印刷することである場合:

cout<<argv[1];十分です。

あなたの方法がうまくいかないのはなぜですか?:

argv[1]への型のポインタであるをキャストしようとしていたchar *ためint、これは違法です。これを行っても、すぐに整数に変換されるわけではありません。文字列を整数に変換するには、文字列を文字ごとに反復する必要があります。std::stoiそれが、またはのようなライブラリ関数で実際に行われていることatoiです。

于 2013-06-09T09:59:59.383 に答える
2

に変換char *できませんint。「文字列」を数値に変換しようとしていますが、これは static_cast では不可能です。

文字列を数値に変換するには、次のような関数を使用する必要がありますatoi()

于 2013-06-09T09:55:29.070 に答える
1

あなたが探しているものは次のとおりです。

#include <cstdlib>
// ...
number = atoi(argv[1]);
于 2013-06-09T09:58:19.143 に答える
1

引数は文字列として渡されるため、そうするとエラーになります。したがって、得られるのはcharへのポインタです。int に変換するには、atoi などの変換関数を使用する必要があります。

于 2013-06-09T09:55:58.100 に答える
0

であるためargv[1]char *ではありませんchar。おそらく、その文字の 1 つにアクセスするつもりだったのでしょうargv[1][0]

于 2013-06-09T09:54:43.293 に答える