01/10/2018, 12:11

Lỗi Hàm getline trong C++

 void nhapsach::xoasach()
 {
 	string check;
 	cout<<"Moi Nhap Vao Ten Sach Muon Xoa:"<<endl;
 	getline(cin,check);
 	int size=Listsach.size();
 	for(int i=0;i<size;i++)
 	{
 		if(check==Listsach[i].Ten)Listsach.erase(Listsach.begin()+i);
	 };
	 system("pause");
 }

mọi người giúp em xem em bị lỗi gì ạ,
em chọn mục xóa sách thì nó ngay lập tức thoát luôn ạ
mà em thay getline =cin thì lại chạy được ạ,

HK boy viết 14:20 ngày 01/10/2018

Vừa duyệt vừa xoá phần tử, như vậy có nguy hiểm không?

Ví dụ, ban đầu Listsach có 5 phần tử, xoá 1 phần tử ở giữa đi thì còn 4 phần tử, nhưng vòng lặp i chỉ số vẫn chạy đến i = 4, truy cập vào Listsach[4] -> truy cập ngoài mảng.

Bài liên quan
0