C ++では、学生の名前、ID、およびcgpaを入力、編集、または表示するためのメニュー駆動型プログラムを作成する必要があるプログラムを作成する必要があります。コードは次のとおりです。
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
using namespace std;
struct student
{
char name[20];
int id;
float cgpa;
};
void input(struct student *);
void display(struct student *);
void edit(struct student *);
int main()
{
int ch;
struct student a;
while(ch!=4)
{
cout<<"1.input";
cout<<"\n2.edit";
cout<<"\n3.display";
cout<<"\n4.exit";
cout<<"\nenter your choice";
cin>>ch;
if(ch==1)
{
cout<<"enter name, id and cgpa of student\n";
input(&a);
}
else if(ch==2)
{
cout<<"enter new name, id and cgpa of the student\n";
edit(&a);
}
else if(ch==3)
{
display(&a);
}
else if(ch==4)
{
ch=ch;
}
else{cout<<"wrong choice\n";}
}
return 0;
}
void input(struct student *s)
{
cin>>s->name;
cin.ignore(256,'\n');
cin>>s->id;
cin>>s->cgpa;
}
void edit(struct student *s)
{
cin>>s->name;
cin.ignore(256,'\n');
cin>>s->id;
cin>>s->cgpa;
}
void display(struct student *s)
{
cout<<s->name<<"\n";
cout<<s->id<<"\n";
cout<<s->cgpa<<"\n";
}
しかし、cin.getline() 関数で名前を入力すると、画面に名前が表示されません。代わりに空白がそこに残され、id と cgpa が出力されます。Cin は正常に動作していますが、cin はスペースを取りません。cin.getline() の使用中に名前が出力されないというコードの何が問題なのですか。