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

Error: Using static_cast to convert from char* to int not allowed.

I've tried finding out why on google and I just can't seem to find it. Also, I don't want to get the ascii value, because argv[1] is a number.

e.g. ./prog 15

cout << number; //want it to print 15.

4

6 回答 6

6

您只需尝试将 char* 转换为 int。你的代码应该是:

int number = atoi(argv[1])
于 2013-06-09T09:56:36.980 回答
4

你可以使用这个:std::stoi函数。完全C++不像是从 c 库中借来的atoi……

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

或者,如果您的目标是打印,那么:

cout<<argv[1];够了。

为什么你的方法不起作用?:

因为您试图强制转换argv[1],这是指向类型的指针char *int这是非法的。这样做不会立即转换为整数。您必须逐字母迭代字符串才能将其转换为整数。这就是在库函数中真正做到的,例如,std::stoiatoi.

于 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。也许您打算访问其中一个字符,例如argv[1][0]

于 2013-06-09T09:54:43.293 回答