c ++为什么我不能使用static_cast将char *转换为int?

时间:2013-06-09 09:52:21

标签: c++ casting static int

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

错误:使用static_cast从char *转换为int不允许。

我试过在google上找出原因,我似乎无法找到它。 另外,我不想得到ascii值,因为argv [1]是一个数字。

e.g。 ./prog 15

cout&lt;&lt;数; //想要打印15。

6 个答案:

答案 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::stoiatoi等库函数中真正做到的。

答案 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]