30/09/2018, 16:35

Hỏi về lệnh getline(cin,string) C++

Mình có soạn 1 đoạn code đơn giản để demo câu hỏi :

class NV{
protected:
	string HoTen;
	int NamSinh;
	long Luong;
public:
	void Nhap(){
		cout << "Ho ten Nhan Vien : "; getline(cin, HoTen);
		cout << "Nam sinh : "; cin >> NamSinh;	};};

class NVVP :public NV{
public:
	void Nhap()	{
		NV::Nhap();	};
};
class NVSX :public NV{
public:
	void Nhap()	{
		NV::Nhap();};
};
int _tmain(int argc, _TCHAR* argv[]){
	NVVP a;
	NVSX b;
	a.Nhap();
	b.Nhap();
	system("pause");
	return 0;}

Lúc run chương trình tới đối tượng b gọi hàm Nhap(),thì mặc định HoTen="",tức là câu lệnh getline(cin,string) không được gọi,vậy mình có thể sửa như thế nào để hàm Nhap() có thể dừng lại đọc các ký tự nhập vào từ bàn phím ?

Nguyen Hai viết 18:43 ngày 30/09/2018

Hàm nhập sử dụng hàm ignore, để bỏ qua ký tự trên dòng vào (std::cin)

    void Nhap(){

        cout << "Ho ten Nhan Vien : "; getline(cin, HoTen);
        cout << "Nam sinh : ";
        cin >> NamSinh;
        cin.ignore(1);
    };
Nguyễn Anh Dũng viết 18:41 ngày 30/09/2018

vẫn đây -_-

lâm phúc tài viết 18:39 ngày 30/09/2018

đổi thành fflush(stdin) vs gets(char*s) thử xem

Nguyen Hai viết 18:41 ngày 30/09/2018

sử dụng linh hoạt ignore là đủ!

Nguyễn Anh Dũng viết 18:46 ngày 30/09/2018

Edited,thêm cin.ignore(1); vào cả 3 hàm Nhap() mới được.Thank all

Bài liên quan
0