错误:从'int'到'const char *'的转换无效

时间:2014-04-11 15:31:09

标签: c++ compiler-errors syntax-error

编译器给出了一个错误:"来自' 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;
}

2 个答案:

答案 0 :(得分:1)

integerstring转换为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不是有效的输入。