来自' char'的无效转换到#char; char *' -fpermissive c ++ ASCII function

时间:2017-04-10 18:49:17

标签: c++ string ascii

我有功能,应该检查字符串中的4个字符是否是下一个ASCII码,如:A5mnpoR89cd,其中mnpo是答案。这是我的代码:

bool trzecie(string a,string b, string c, string d)
{
string x = a + b + c + d;
sort(x.begin(), x.end());
if((int)x.at(0) == (int)x.at(1) - 1 == (int)x.at(2) - 2 == (int)x.at(3) - 3)
{
    return true;
}
else return false;
}

int main()
{
ifstream wejscie("hasla.txt");
string tab[200];
vector <string> vec;

for(int i=0; i<200; i++)
{
    wejscie>>tab[i];
}

int licz_b = 0;
for(int i=0; i<200; i++)
{
    string x = tab[i];
    for(int j=3; j<x.size(); j++)
    {
        if( trzecie( x.at(j),  x.at(j-1) , x.at(j-2), x.at(j-3)) ) //ERROR HERE
        {
            if(!trzecie( x.at(j),  x.at(j-1) , x.at(j-2), x.at(j+1))) // AND HERE
            {
                licz_b++;
                break;
            }
        }
    }
}
cout<<"C. "<<licz_b<<endl;
}

我发现错误无效转换来自&#39; char&#39;到#char; char *&#39; -fpermissive 突出显示的行。问题是什么?我试图改变

x.at(j)

为:

x[j]

但它也没有工作; /:

还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

此功能具有签名

bool trzecie(string a,string b, string c, string d)

string构建char的正确方法是

std::string str(1, char);

所以那些行应该是

if( trzecie( string(1, x.at(j)),  string(1, x.at(j-1)), string(1, x.at(j-2)), string(1, x.at(j-3))))