求助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?
展开
 我来答
萌火神酱悍谑1
2014-09-11 · TA获得超过410个赞
知道答主
回答量:135
采纳率:100%
帮助的人:62万
展开全部
因为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;}
希望能解决您的问题。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2014-09-11 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6479万
展开全部
if(name[i]=='\0')——string中的字符串确实不是以'\0'结尾的,但这里不是有没有'\0'的问题。name[i]是个字符串,怎么能与一个字符比较?写成if(name[i]==“”)试试!其他我没看……
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式