Chào các anh chị và các bạn. Cho em hỏi là tại sao khi em dùng cin.ignore(); lúc nhập msv thì khi xuất bị mất kí tự đầu, còn dùng fflush(stdin) thì lại được ạ. Em xin cảm ơn ạ.
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
class Sinhvien{
private:
char msv[30];
string hoten;
int tuoi;
double diem;
public:
void Nhap();
void Xuat();
};
void Sinhvien::Nhap() {
cout << "Nhap ma so sinh vien: ";
//cin.ignore();
fflush(stdin);
//getline(cin, msv);
gets(msv);
cout << "Nhap ho ten sinh vien: ";
///cin.ignore();
fflush(stdin);
getline(cin, hoten);
cout << "Nhap tuoi sinh vien: ";
cin >> tuoi;
cout << "Nhap diem sinh vien: ";
cin >> diem;
}
void Sinhvien::Xuat() {
cout << "\n____________________________\n";
cout << "Ma so sinh vien: " << msv;
cout << "\nHo ten sinh vien: " << hoten;
cout << "\nTuoi sinh vien: " << tuoi;
cout << "\nDiem sinh vien: " << diem;
}
int main(){
Sinhvien a;
Sinhvien b;
a.Nhap();
b.Nhap();
a.Xuat();
b.Xuat();
return 0;
}