我在代码块上使用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;
}
导致此错误的原因是什么?
答案 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");