正常状態と読み取り失敗の違いと二つの使い分けが知りたいです。

        #include <string>
        #include <cctype>
        #include <iostream>
            #include <fstream>
        #include <iomanip>
        #include <vector>
        using namespace std;

        #define BUFFER 2
        int main()
        {
            string number;
            char str[32];
            while (true) {
                cout << "文字を入力してください:";
                //cin >>setw(3)>> number;
                cin.getline(str,BUFFER);

                /*入力エラー処理*/
                if (cin.good() != true) {//正常じゃない時
                    cout << "入力エラー\n";
                    cin.clear();
                    cin.ignore(1024,'\n');
                    continue;
                }

                cout << "number:" << str << endl;
                cin.ignore(1024,'\n');


            }

            //good正常状態エラーなし
            //fail読み取り失敗

            _getch();
            return 0;
        }