皱纹纸枫叶:关于c++一个问题!

来源:百度文库 编辑:神马品牌网 时间:2024/04/28 14:59:31
#include<iostream.h>
class student
{
public:
long int num;
char name[5];
void display()
{
cout<<num<<";"<<name[5]<<endl;
}
};

void main()
{
student stu;
cin>>stu.num;
cin>>stu.name;
stu.display();
}
为什么输入num是03226,name为fuxing时不能完全一样地显示?怎么才能正确地显示??

#include<iostream.h>
class student
{
public:
char num[6];
char name[5];
void display()
{
cout<<num<<";"<<name<<endl;
}
};

void main()
{
student stu;
cin>>stu.num;
cin>>stu.name;
stu.display();
}
这样写就可以了
你定义num为long int,但你输入的是03226,数字不能以0开头的,你把num定义成字符数组就可以了。这里说一下为什么要定义成num[6],因为内存将最后,num[5]保存为'\0'字符,这样会占用一个字节,所以你要多分配一个空间,否则输出时会出现错误。
如果,定义num为char num[5],输入的03226全部保存在num[5]里面,将分配的存储空间给使用完了,没法再保存'\0',这样就导致输出03226后程序并不是输出";",而是继续输出name。编译、运行会输出03226fuxing;fuxing,这是因为字符串在输出时,遇到'\0'结束,当然程序结束也可以。所以你要定义成num[6],这样才会正确地显示。

字符串整体输入/输出时,要注意:
1) 输出字符不包括'\0'。
2)输出字符串时,输出项是字符数组名,输出时遇到'\0'结束。
3)输入多个字符时,以空格分隔;输入单个字符串时其中不能有空格。