【发布时间】:2016-05-14 16:34:05
【问题描述】:
当我在下面的代码中传递一个string 变量时,g++ 给出了一个错误:
无法将 'std::__cxx11::string {aka std::__cxx11::basic_string}' 转换为 'const char*' 以将参数 '1' 转换为 'int atoi(const char*)'
我的代码是:
#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
string a = "10";
int b = atoi(a);
cout<<b<<"\n";
return 0;
}
但如果我将代码更改为:
#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
char a[3] = "10";
int b = atoi(a);
cout<<b<<"\n";
return 0;
}
一切正常。
请解释为什么string 不起作用。 string a和char a[]有区别吗?
【问题讨论】:
-
“字符串a和char a[]有区别吗?”是的。一个是
std::string,一个不是。 -
正如错误消息中明确指出的那样,需要进行转换。