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

时间:2012-03-14 13:03:12

标签: c++

我在代码块上使用gcc,我想编写一个使用记录数组的函数。

但是我一直收到错误:

invalid conversion from 'int' to 'const char*'

代码:

#include <iostream>
#include <string>

using namespace std;

struct rendeles {
    string nev;
int mennyiseg;
};

struct teaceg {
string nev;
int mennyiseg;
};

int szam; 
struct rendeles rendelt [100];      
struct teaceg cegek [100];          
int h;

int hanyadikceg (string cegnev)
{                            
    for (int i=0;i<szam;i++)
    {
        if (cegek[i].nev==cegnev)
            {
                return i;
            }
    }
    return -1;
}

int main()
{
    cout << "Hány db rendelés lesz összesen?";
    cin >> szam;
    if (szam > 100)
    {
        cout << "Hiba: túl nagy a rendelések száma! (100 a maximum)";
        return -1;
    }

    for (int i=0;i<szam;i++)        
    {
        cout << "A(z) " << i+1 <<". cég neve:";
        cin >> rendelt[i].nev;                                 
        cout << "A(z) " << i+1 <<". rendelés mennyisége:";
        cin >> rendelt[i].mennyiseg;                           
    }
    cout << endl;

    h = hanyadikceg('Lipton');              //the problem is in this line
    cout << "Hanyadik cég a xyz:" << h;

    for (int i=0;i<szam;i++)          
    {
        cout << "A(z) " << i+1 << ". rendelés: " << rendelt[i].nev << " " <<     rendelt[i].mennyiseg << endl;
    }

    return 0;
}

导致此错误的原因是什么?

4 个答案:

答案 0 :(得分:14)

您需要对字符串文字使用双引号("),而不是单引号(')。

答案 1 :(得分:4)

您使用的是单引号('Lipton')。单引号用于char - 文字。

使用"Lipton"代替const char*字面值。

答案 2 :(得分:3)

在问题行中将'Lipton'更改为"Lipton",编译错误将消失。

在C / C ++中,双引号表达式是字符串(或者,技术上,字符串文字)并解析为char *const char *类型,而单引号表达式是字符(或字符文字)并解析为char类型(可以隐式转换为int)。这解释了您的错误:编译器无法将char整数类型转换为函数签名所需的const char *

答案 3 :(得分:2)

h = hanyadikceg('Lipton');

应该是

h = hanyadikceg("Lipton");