em dời cái cin.ignore ra ngoài vòng lặp để liền sau cin>>n là được :V
ignore chỉ để giữa cin>> và getline thôi, để ignore cái dòng trống mà cin>> ko đọc :V Vòng lặp của em thì nó chạy như thế này
cin>>n
cin.ignore
getline(cin, s)
cin.ignore // dư cái này
getline(cin, s)
cin.ignore // dư cái này
getline(cin, s)
cin.ignore // dư cái này
getline(cin, s)
cin.ignore // dư cái này
getline(cin, s)
mà viết cin.ignore()
thì nó chỉ ignore 1 ký tự :V lỡ em nhập n là 4 \n
có 1 dấu cách giữa số 4 và ký tự xuống dòng thì nó chỉ ignore dấu cách này :V Nên viết là cin.ignore(100, '\n');
cho nó ignore tối đa 100 ký tự, hoặc tới khi gặp ký tự \n
thì dừng. Nhưng cách này vẫn gặp vấn đề lỡ ai chơi ác để 101 dấu cách sau số 4 thì sao :V :V Chính xác nhất là viết std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
:V :V :V