01/10/2018, 16:51

Nhập chuỗi bị trôi


Mọi người cho mình hỏi ở Constructor của mình, tại sao khi nhập số sinh viên của lớp xong thì nó hiện ra 2 lần string "Please enter the student’s name: " ạ? Và cách troubleshoot là gì? Mình đã thữ dùng fflush(stdin); sau khi nhập số nhưng không hiệu quả

rogp10 viết 18:53 ngày 01/10/2018

fflush(stdin);

Câu này bỏ lâu rồi mà

Tức là bị kẹt một dấu ‘\n’ trong buffer, cái quái dị là khi lấy số thì bỏ qua mà lấy chuỗi thì nhận luôn dấu này kết thúc nhập (và ghi rỗng) nhận xong mới yêu cầu chuỗi thứ hai.

Trương Tấn Phát viết 19:01 ngày 01/10/2018
cin.ignore();
student = new string[numStudents];
N.T.H viết 18:53 ngày 01/10/2018

Vấn đề vậy mà mình lại không nghĩ ra, cảm ơn bạn rất nhiều.

N.T.H viết 18:59 ngày 01/10/2018

Vậy giờ người ta dùng phương thức ignore() thay cho fflush() luôn rồi nhỉ?

rogp10 viết 18:54 ngày 01/10/2018

Nói chung, nó nhận hết những gì còn lại trong buffer tới lúc ấy

Vậy giờ người ta dùng phương thức ignore() thay cho fflush() luôn rồi nhỉ?

Thực ra fflush(stdin); bị đặt ngoài vòng từ lâu rồi. Ngay cả POSIX cũng không cho, chỉ có VS cho dùng, nhưng 2014 bỏ.

N.T.H viết 19:06 ngày 01/10/2018

Ôi mình lạc hậu quá rồi, cảm ơn bạn khai sáng :)))

Bài liên quan
0