#include <iostream.h>
#include <string.h>
#include <stdio.h>class kk{
public: int a;
float b;
char c[100];
friend kk operator + (kk x,kk y);
};
main()
{kk n1;
kk n2;
kk n3;
cout<<"&#63384;怀&#63541;n1.a"<<endl;
cin>>n1.a;
cout<<"&#63384;怀&#63541;n1.b"<<endl;
cin>>n1.b;
cout<<"&#63384;怀&#63541;n1.c"<<endl;
//cin.getline(n1.c,50,' ');
cin>>n1.c;
cout<<"&#63384;怀&#63541;n2.a"<<endl;
cin>>n2.a;
cout<<"&#63384;怀&#63541;n2.b"<<endl;
cin>>n2.b;
cout<<"&#63384;怀&#63541;n2.c"<<endl;
//cin.getline(n2.c,50,' ');
cin>>n2.c;
    n3=n1+n2;
    cout<<"n3.a="<<n3.a<<endl;
cout<<"n3.b="<<n3.b<<endl;
cout<<"n3.c="<<n3.c<<endl;
return 0;
}
kk operator + (kk x,kk y)
{
kk z;
z.a=x.a+y.a;
z.b=x.b+y.b;
strcpy(z.c,x.c);
strcat(z.c,y.c);
return z;
}

解决方案 »

  1.   

    Gu_c_h(Gu) :感谢你,在给未初始化的字符串赋值时,首先用strcpy,不能直接用strcat,谢谢!
    但是,将cin.getline改为cin>>,会存在一个问题,如果输入的字符串包括空格怎么办?cin>>会认为到空格就截止了!我想用cin.getline,但cin.getline 似乎会将上次输入的最后一个字符'\n'装入,因而不等输入就认为已经输入,直接进入下一条语句.我不知道如何处理.而且,cin.getline会限定你输入字符的数目.
      

  2.   

    而且,用getline,z值无法返回,不知什么原因.
      

  3.   

    谢谢各位!我已解决.在cin.getline()之前,加一句cin.ignore()就可以了.