繁体   English   中英

我如何克服此错误C2679:二进制'>>':未找到采用'const char []'类型的右侧操作数的运算符

[英]how I can overcome this error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'const char []'

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include <cstring>

void initialize(char[],int*);
void input(const char[] ,int&);
void print ( const char*,const  int);
void growOlder (const char [], int* );

bool comparePeople(const char* ,const int*,const char*,const int*);

int main(){

  char name1[25];
     char name2[25];
     int age1; 
  int age2;


 initialize (name1,&age1);
 initialize (name2,&age2);

 print(name1,age1);
 print(name2,age2);

 input(name1,age1);
 input(name2,age2);

 print(name1,age1);
 print(name2,age2);

 growOlder(name2,&age2);

 if(comparePeople(name1,&age1,name2,&age2))
    cout<<"Both People have the same  name and age "<<endl;
 return 0;
}

void input(const  char name[],int &age)
{
 cout<<"Enter a name :";
 cin>>name ;

 cout<<"Enter an age:";
 cin>>age;
 cout<<endl;
}

void initialize ( char name[],int *age)
{
 name[0]='\0'; 
 *age=0; }
void print ( const char name[],const int age )
{
 cout<<"The Value stored in variable name is :"
   <<name<<endl
  <<"The Value stored in variable  age is :"
   <<age<<endl<<endl;
}

void growOlder(const char name[],int *age)
{
 cout<< name <<" has grown one year older\n\n";
 *age++;
}
bool comparePeople (const char *name1,const int *age1,
     const char *name2,const int *age2)
{

return(*age1==*age2 && !strcmp(name1,name2));

}

您的input()函数的name参数是指向const char的指针。 const表示您无法修改它,因此,如果需要修改它,则不必为const。

也就是说,要真正修复它,请在当前使用char[]char*的任何地方使用std::string并考虑返回对象而不是使用out-parameters。 这将使您的代码不那么容易出错,并且更易于理解和理解。

符号“ >>”是运算符。 String类的编写者包括此运算符,以便仅采用基本类型,当然也采用String类类型。

您有两种选择:

  1. 将char数组转换为字符串
  2. 重载'>>'运算符以获取char数组并根据需要输出

如果您真的想找乐子,请查找重载运算符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM