为啥 atoi 函数不能将 const char * 转换为 int?
Posted
技术标签:
【中文标题】为啥 atoi 函数不能将 const char * 转换为 int?【英文标题】:Why atoi function can't convert const char * to int?为什么 atoi 函数不能将 const char * 转换为 int? 【发布时间】:2012-11-10 19:26:43 【问题描述】:为什么在这段代码中atoi()
函数不能正常工作,为什么编译器会报这个错误:
初始化`int atoi(const char*)'的参数1
我的代码如下:
#include <iostream.h>
#include <stdlib.h>
int main()
int a;
char b;
cin >> b;
a = atoi(b);
cout << "\na";
return 0;
【问题讨论】:
【参考方案1】:b
是 char
,但在 atoi()
中,您必须通过 char *
或 const char *
,因为 c++ 是严格的类型检查语言,因此您得到了这个
应该是这个cout<<"\n"<<a;
而不是这个cout<<"\na"
因为后面的不会打印a的值
【讨论】:
【参考方案2】:你可以在这里看到atoi
Atoi 收到一个指向 char 的指针,而不是像你做的那样的 char。 这是有道理的,因为通过这种方式,您可以将 atoi 应用于超过 1 位的“数字”(以字符串表示),例如 atoi("100");
int atoi ( const char * str );
否则,如果是char,只能转换'0','1','2'..'9'。
编辑:试试这个例子:
#include <iostream>
#include <stdlib.h>
int main()
int a;
char b[10];
cin >> b;
a = atoi(b);
cout<<"\n"<<a;
return 0;
【讨论】:
以上是关于为啥 atoi 函数不能将 const char * 转换为 int?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 const char* 不能与 boost 的 stringstream 和 read_json 一起使用?
error C2664: “int CWnd::GetWindowTextW(LPTSTR,int) const”: 不能将参数 1 从“char [10]”转换为“LP
为啥字符串函数有一些参数作为 const char *(指向常量字符的指针)?