一个c++编程,用到了atoi函数,错误显示无法转变类型。

#include<stdlib.h>#include<vector>#include<string>#include<fstream>#include<sstream>#... #include <stdlib.h>
#include <vector>
#include <string>
#include <fstream>
#include <sstream>
#include <iomanip>
using namespace std;
int main()
{
ifstream in1("c:\\508.txt");
ofstream out1("c:\\out.txt");
ofstream out2("c:\\out00.txt");
//将所有出现的城市入栈
vector<string> ss1;
ss1.clear();
int i,j=0,j1=0,h3=0,h1,h2,js=0;
string s,s1,s2,s3,c1,c2,c3;

while(getline(in1,s))

{i=0; j++;
istringstream sin(s);
for(string s9;sin>>s9;)
{
i++;
if(i==1) c1=s9;
else if(i==2) c2=s9;
else if(i==3) c3=s9;
else { out1<<"计算出错!!请检查!"; break;}

ifstream in11("c:\\508.txt"); j1=0;
while(getline(in11,s2))
{ j1++; if(j1>j) if(s2.find(c2,0)!=-1) if(s2.find(c3,0)!=-1)
{
out2<<s<<"______"<<s2<<endl;
js=0; h1=-1; h2=-1; h3=-1;
istringstream sin(s2);
for(string s9;sin>>s9;) { js++; if(js==1) {int h1=atoi(s9); int h2=atoi(c1); int h3=h1+h2; break;} }
if(js==1) {out1<<h3<<" "<<c2<<" "<<c3<<endl; out2<<h3<<" "<<c2<<" "<<c3<<endl; break;}

}

}

}

}

return 0;

}
我原始的数据比如说是:61 上海大学 山东大学。在其他行中可能还存在20 山东大学上海大学。我要把两个的数字相加,只保留一行,将出现的第二行去除。
提示错误如下:
Cpp1.cpp(42) : error C2664: 'atoi' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
C:\Documents and Settings\Administrator\桌面\Cpp1.cpp(42) : error C2664: 'atoi' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'const char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Error executing cl.exe.
我又修改了一下程序,最后的地方变成了 js=0; h1=-1; h2=-1; h3=-1;
istringstream sin(s2);
for(string s9;sin>>s9;) { js++; if(js==1) {int h1=atoi(s9.c_str()); int h2=atoi(c1.c_str());

int h3=h1+h2; out1<<h3<<" "<<c2<<" "<<c3<<endl; out2<<h3<<" "<<c2<<" "<<c3<<endl; }可是光有数字没汉字,什么情况呀
展开
 我来答
yeyulong4
2011-10-26 · TA获得超过454个赞
知道小有建树答主
回答量:307
采纳率:0%
帮助的人:285万
展开全部
String类是一个宏定义,相当于basic_string<char, char_traits<char>, allocator<char> >,而atoi函数的形参是指针常量,也可以说是一个数组的数组名,形参类型都不同,当然不行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Eli2021
2011-10-26 · TA获得超过664个赞
知道小有建树答主
回答量:1266
采纳率:72%
帮助的人:343万
展开全部
int h1=atoi(s9); 改为 int h1=atoi(s9.c_str());
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式