Dừng lại cin trong vòng lăp while (cin<<x)

Làm sao để dùng lại cin sau khi nhập ctrl + x trong vòng lăp while (cin<<x) (ở đây em nghĩ là do cin struct nên em không dùng hàm cin.clear được)

Đây là các hàm của em

stream& operator>>(istream& is, fraction& f) 
    {
        is >> f.numerator;
        cout << "/";
        is >> f.denominator;
    }
void insertFraction(fraction*& f, int& n, fraction x)
{
    int m = n + 1;
    fraction* fNew = (fraction*)realloc(f, m * sizeof(fraction));
    if (fNew != NULL)
    {
        fNew[n] = x;
        n++;
        f = fNew;
    }
}
void enterFraction(fraction*& f, int& n)
{
     fraction x;
     f = NULL;
     n = 0;
     int i = 1;
     cout << "Enter fraction " << i << " : \n";
     while (cin >> x)
     {
         insertFraction(f, n, x);
          i++;
         cout << "Enter fraction " << i << " or enter Ctrl + X to stop: \n";
     }
     cin.clear();
}

sau khi gọi hàm enterFraction, em không thể dùng cin được nữa, cin.clear(); không có tác dụng… Mong được chỉ giáo ạ TT

Hàm của bạn chưa có giá trị trả về. Bạn phải return stream hiện tại của hàm, tức là return is mới được.

Code mẫu:

https://docs.microsoft.com/en-us/cpp/standard-library/overloading-the-input-operator-for-your-own-classes?view=vs-2019

1 Like

cin.clear(); thêm cin.ignore(); nữa nha bạn.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?