编译器给出了一个错误:"来自' int'的无效转换to' const char *'。违规行是:
change[j]=oper[integer(A[i][j]+A[i][j+1])][0];
我的麻烦在哪里?
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
string mas[10000000],oper[100];
int integer(string a)
{
int numb;
istringstream(a)>>numb;
return numb;
}
int main()
{
int l,k,i,d=0;
string temp1,temp2,s,t,ans="-1",change;
vector<string> A,B;
for (i=0;i<10000000;++i)
mas[i]="-1";
for (i=0;i<100;++i)
oper[i]="-1";
cin>>l>>s>>t>>k;
for (i=0;i<k;++i)
{
cin>>temp1>>temp2;
oper[integer(temp1)]=temp2;
}
A.push_back(s);
while(A.size()>0)
{
if (ans!="-1")
break;
for (i=0;i<A.size();++i)
{
if (ans!="-1")
break;
for (int j=0;j<l-1;++j)
{
change=A[i];
change[j]=oper[integer(A[i][j]+A[i][j+1])][0];
change[j+1]=oper[integer(A[i][j]+A[i][j+1])][1];
if(oper[integer(A[i][j]+A[i][j+1])]!="-1" && mas[integer(change)]!="-1")
{
if (mas[integer(change)]==t)
{
ans=d;
break;
}
mas[integer(change)]=d+1;
B.push_back(change);
}
}
}
A=B;
B.clear();
}
cout<<ans<<endl;;
return 0;
}
答案 0 :(得分:1)
integer
将string
转换为int
。但是你传递的是char
,而不是string
。
答案 1 :(得分:0)
A是vector&lt; std :: string&gt;,所以A [j]是字符串,所以A [j] [i]是字符串的字符。
不试图了解目的是什么,我可以说A [j] [i] + A [j] [i + 1]对字符值求和,所以如果两个字符都是'A'和'A'用65表示,结果值为130 - &gt;'é'
然后你把这个char放在方法中,它接受字符串,所以char不是有效的输入。