求助C++中关于字符串数组的问题
classphone{private:stringname[50],number[50];public:phone(){inti=0;stringna,nu;ifstre...
class phone
{
private:
string name[50],number[50];
public:
phone()
{
int i=0;
string na,nu;
ifstream file("1.txt");
file>>na>>nu;
while(!file.eof())
{
name[i]=na;
number[i]=nu;
i++;
}
}
~phone()
{
}
void search()
{
int i;
string na;
cout<<"请输入要搜索的人名:";
for(i=0;i<=49;i++)
{
if(name[i]==na)
{
cout<<name[i]<<"\t"<<number[i]<<endl;
return;
}
}
cout<<"无此人物"<<endl;
}
void add()
{
int i;
string na,nu;
cout<<"请输入姓名";
cin>>na;
cout<<"请输入号码";
cin>>nu;
for(i=0;i<=49;i++)
{
if(name[i]=='\0')
{
name[i]=na;
number[i]=nu;
name[i+1]='\0';
number[i+1]='\0';
cout<<"已添加成功"<<endl;
return;
}
}
cout<<"添加失败"<<endl;
}
void del()
{
int i;
string na,nu;
cout<<"请输入姓名";
cin>>na;
for(i=0;i<=49;i++)
{
if(name[i]==na)
{ for(;i<=49;i++)
{
name[i]==name[i+1];
number[i]==name[i+1];
}
return;
}
}
cout<<"删除失败"<<endl;
}
void show()
{
int i;
for(i=0;i<=49;i++)
{
cout<<name[i]<<"\t"<<number[i]<<endl;
}
return;
}
void of()
{
int i;
char ch[50];
cout<<"请输入要保存的文件名:";
cin>>ch;
ofstream out(ch);
for(i=0;i<=49;i++)
{
out<<name[i]<<"\t"<<number[i]<<endl;
}
return;
}
};
以上是我定义的一个类,编译器在add函数中报错:
: error: no match for 'operator==' in '((phone*)this)->phone::name[i] == '\000''难道C++中字符串数组没有\0? 展开
{
private:
string name[50],number[50];
public:
phone()
{
int i=0;
string na,nu;
ifstream file("1.txt");
file>>na>>nu;
while(!file.eof())
{
name[i]=na;
number[i]=nu;
i++;
}
}
~phone()
{
}
void search()
{
int i;
string na;
cout<<"请输入要搜索的人名:";
for(i=0;i<=49;i++)
{
if(name[i]==na)
{
cout<<name[i]<<"\t"<<number[i]<<endl;
return;
}
}
cout<<"无此人物"<<endl;
}
void add()
{
int i;
string na,nu;
cout<<"请输入姓名";
cin>>na;
cout<<"请输入号码";
cin>>nu;
for(i=0;i<=49;i++)
{
if(name[i]=='\0')
{
name[i]=na;
number[i]=nu;
name[i+1]='\0';
number[i+1]='\0';
cout<<"已添加成功"<<endl;
return;
}
}
cout<<"添加失败"<<endl;
}
void del()
{
int i;
string na,nu;
cout<<"请输入姓名";
cin>>na;
for(i=0;i<=49;i++)
{
if(name[i]==na)
{ for(;i<=49;i++)
{
name[i]==name[i+1];
number[i]==name[i+1];
}
return;
}
}
cout<<"删除失败"<<endl;
}
void show()
{
int i;
for(i=0;i<=49;i++)
{
cout<<name[i]<<"\t"<<number[i]<<endl;
}
return;
}
void of()
{
int i;
char ch[50];
cout<<"请输入要保存的文件名:";
cin>>ch;
ofstream out(ch);
for(i=0;i<=49;i++)
{
out<<name[i]<<"\t"<<number[i]<<endl;
}
return;
}
};
以上是我定义的一个类,编译器在add函数中报错:
: error: no match for 'operator==' in '((phone*)this)->phone::name[i] == '\000''难道C++中字符串数组没有\0? 展开
2个回答
展开全部
因为ch只是一个字符型的数组,不能用==运算,字符串型变量可以用< > ==等等运算符是因为#include<string>函数中有针对字符串重载运算符,而字符数组不能。如果想用字符数组来判断的话#include<iostream>
#include<string>
using namespace std;
int main()
{ string str="string型字符串";
//初始化string型字符串的值
char ch[]="char型字符串"; //保存一个char型字符串
cout<<str<<endl; cout<<ch<<endl; cout<<"请输入“狗”的英文单词:"<<endl;
cin>>str;
if(str=="dog")
{
cout<<"狗:"<<str<<endl; cout<<str<<"的第1个字符是:"<<str[0]<<endl;
}
else cout<<"输入错误\n";
cout<<"请输入“猪”的英文单词:"<<endl;
cin>>ch;
if(!strcmp(ch,"pig"))
{ cout<<"猪:"<<ch<<endl; cout<<ch<<"的第1个字符是:"<<ch[0]<<endl; }
else cout<<"输入错误\n"; return 0;}
希望能解决您的问题。
#include<string>
using namespace std;
int main()
{ string str="string型字符串";
//初始化string型字符串的值
char ch[]="char型字符串"; //保存一个char型字符串
cout<<str<<endl; cout<<ch<<endl; cout<<"请输入“狗”的英文单词:"<<endl;
cin>>str;
if(str=="dog")
{
cout<<"狗:"<<str<<endl; cout<<str<<"的第1个字符是:"<<str[0]<<endl;
}
else cout<<"输入错误\n";
cout<<"请输入“猪”的英文单词:"<<endl;
cin>>ch;
if(!strcmp(ch,"pig"))
{ cout<<"猪:"<<ch<<endl; cout<<ch<<"的第1个字符是:"<<ch[0]<<endl; }
else cout<<"输入错误\n"; return 0;}
希望能解决您的问题。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询