30/09/2018, 23:35
Thắc mắc tại sao lệnh fflush(stdin) không có tác dụng?
#include<iostream>
#include<string>
using namespace std;
void main()
{
int ngay, thang, nam;
cout << "Nhap ngay thang nam sinh";
cin >> ngay >> thang >> nam;
cout << "ban sinh ngay:" << ngay << "-" << thang << "-" << nam << endl;
cout << "Nhap ten cua ban: ";
string ten;
fflush(stdin);
getline(cin, ten);
cout << "Ten cua ban la: " << ten << endl;
system("pause");
}
em mới học c++ và viết chương trình đơn giản như trên? nhưng cỏ vẻ như lệnh fflush(stdin) không có tác dụng( còn dùng lệnh cin.ignore() thì vẫn ổn). Mọi người giải thích dùm em với!
Bài liên quan
Bạn dùng chức năng tìm kiếm trên diễn đàn nhé, vấn đề này được bàn nhiều lần rồi, chẳng hạn như topic này:
@freedom cảm ơn bạn, mình tìm nhiều mà ko ra nên mới lên đây hỏi
nó chạy ra ntn bạn? bạn thử thêm 1 cái fflush(stdin) ngay dưới nữa coi sao
vẫn bị bạn à. nghĩa là nó lấy ký tự enter dư lúc ta vừa nhập lúc trên vào chuỗi cần nhập tiếp theo đó bạn
Bạn thử thay fflush(stdin) bằng 1 câu lệnh sau:
while(getchar() != '\n' && getchar() != EOF) {}
Visual 2013 trở lên ko còn hỗ trợ fflush nữa. Bạn thay lệnh nhập bằng getline+cin.ignore là đc
thì lệnh cin.gnore đc, tại thì thấy demo lệnh fflush(stdin) đc mà m code lại ko được nên tò mò. cảm ơn các bạn