number = static_cast<int>(argv[1]);
错误:使用static_cast从char *转换为int不允许。
我试过在google上找出原因,我似乎无法找到它。 另外,我不想得到ascii值,因为argv [1]是一个数字。
e.g。 ./prog 15
cout&lt;&lt;数; //想要打印15。
答案 0 :(得分:6)
您只是尝试将char *转换为int。你的代码应该是:
int number = atoi(argv[1])
答案 1 :(得分:3)
您可以使用此:std::stoi
功能。它完全是C++
,而不是像从c库中借来的那样...... atoi
。
number=std::stoi( argv[1])
cout<<number;
或者如果你的目标是打印那么:
cout<<argv[1];
就足够了。
为什么你的方法不起作用?:
因为您试图将argv[1]
(char *
类型的指针投射到int
,这是非法的。这样做不会立即转换为整数。您必须逐字母地迭代字符串,以便将其转换为整数。这就是在std::stoi
或atoi
等库函数中真正做到的。
答案 2 :(得分:2)
您无法将char *
转换为int
。您正在尝试将“字符串”转换为数字,这对于static_cast是不可能的。
要将字符串转换为数字,您必须使用atoi()
答案 3 :(得分:1)
这样做会出错,因为参数是作为字符串传递的。所以你得到的是一个指向char的指针。要将其转换为int,您必须使用转换函数,例如atoi
答案 4 :(得分:1)
您正在寻找的是:
#include <cstdlib>
// ...
number = atoi(argv[1]);
答案 5 :(得分:0)
因为argv[1]
是char *
,而不是char
。也许您打算访问其中一个字符,例如argv[1][0]
?