![](/img/trans.png)
[英]Error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'const char [4]' (or there is no acceptable conversion) 22
[英]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类类型。
您有两种选择:
如果您真的想找乐子,请查找重载运算符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.