2014-04-11 68 views
-3

编译器给我一个错误:“从‘诠释’到‘为const char *’转换无效的违规行为:错误:从“诠释”到“为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; 
} 
+1

添加两个字符给出一个整数。 'integer'接受一个字符串。 – chris

+2

我的天啊,满满的括号! –

+0

@ dyp的评论是指原始标题;从那以后它被修改了。 –

回答

0

integer转换一个stringint,但你传递一个char,而不是一个string

0

A是矢量<的std :: string >,所以A [j]为字符串,所以A [j]的[i]是字符串的字符。

没有试图理解目的是什么,我可以说A [j] [i] + A [j] [i + 1]将字符加起来为,所以如果两个字符都是'A'并且作为“A”是由65表示的,该结果值将是130 - >“E”

然后你把这个字符,并把它在方法,接受字符串,因此炭无效输入。

相关问题