I'm a student, and I am currently working on C++ Classes.  I am making a program which is supposed to ask a user to input a float point number not greater that 99.99 as a price of fuel at a gas station.  I have created code that saves the user input in to a char array, and created limits so that the user can't input more than 2 dots, for example (2..2).  The maximum number of characters is 5 including one dot.  Now, everything works fine except for if the user enters two sets of strings before hitting enter.  I have a problem because the second string messes up with other cin statements in the loop.
The code will also take the finalized char array input, and than covert it to a float variable so that the further calculations can be computed easily. 
I am working on a Windows system, and Visual Studio 2017 C++.
I have tried detecting the single white space in an if/else statement, but it seems that white space is not detected as a single char array member, like this ex.   else if (str[count] == ' ') , and than asking to re enter the correct input without the white space.  getline() function could not work on a char array, so I couldn't discard the characters entered after including and after the white space in this way.  I have tried changing the char array to a string, but still if the user inputs two or more strings separated by white space, my program keeps reading it in to cin over again.
int main()
{
    int count = 0;
    int lenFlag = 0, mainFlag = 0;
    float result = 0;
    int len;
    char str[6] = "00000";
        //string str ="00000";
        cout.setf(ios::fixed);
    cout.setf(ios::showpoint);
    cout.precision(2);
    //This part will ask the user to set the price of fuel 
        //for the gas pump program.   The programming project segment 
    //is from a book by Walter Savitch "Absolute C++".
while (mainFlag == 0)
{
    cout << "Please enter the fuel price in dollars $";
    cin >> str;
    len = strlen(str);
    cout << "strlen is = " << len << endl;
    while (len <= 5 && mainFlag == 0)
    {
        count = 0, lenFlag = 0;
            while (count < len && lenFlag == 0)
        {
        if (count == 0 && (str[count] < 48 || str[count] > 57))
        {                                                    
                   cout << "The first input member must be a number."
                "You must use a number between 0-9.\n"
            "Try again: ";
            cin >> str;
            len = strlen(str);
            lenFlag = 1;
        }
                else if (count > 0 && (str[count] < 48 || str[count] > 57)   
                    &&  str[count] != '.')
        {
    cout << "You must enter number between 0-9, or a decimal delimiter.\n"
        "Try again, : ";
            cin >> str;
            len = strlen(str);
            lenFlag = 1;
        }
        else if (count > 0 && (str[0] == '.' && str[1] == '.') || (str[0] == '.' && str[2] == '.') ||
                    (str[0] == '.' && str[3] == '.') || (str[0] == '.' && str[4] == '.') ||
                    (str[1] == '.' && str[2] == '.') || (str[1] == '.' && str[3] == '.') ||
                    (str[1] == '.' && str[4] == '.') || (str[2] == '.' && str[3] == '.') ||
                    (str[2] == '.' && str[4] == '.') || (str[3] == '.' && str[4] == '.'))
        {
    cout << "You have entered more than 1 decimal delimiter, try again: ";
            cin >> str;
            len = strlen(str);
            lenFlag = 1;
        }
        else if (count > 1 && str[0] > 48 && str[0] < 58 && str[1]>47 
                         && str[1] < 58 && str[2]>47 && str[2] < 58)
        {
                cout << "Maximum number is 99.99, try again:\n";
            cin >> str;
            len = strlen(str);
            lenFlag = 1;
        }
        else if (str[count] == ' ')
        {
            cout << "Typing whitspace is not an option!!" << endl;
            cout << "Try again!!" << endl;
            cin >> str;
            len = strlen(str);
            lenFlag = 1;
        }
        else if (count == len - 1 && lenFlag == 0)
        {
            //cout << "Main flag switches to 1!!" << endl;
            mainFlag = 1;
        }
             count++;
          }
    } //while(lenCopy <= 5) loop end 
        if (len > 5)
        {
                cout << "Either non-numbers were entered, or a negative 
                number, or an incorrect " << endl;
            cout << "number size. Enter a maximum size of 5 
                including a .dot for decimal number" << endl;
            cout << "Maximum number is 99.99." << endl;
            mainFlag = 0;
        }
 }//mainflag loop ends
    int dotpos = 0;
    for (int n = 0; n < len; n++)                            
    {                                       
        if (str[n] == '.')                                  
        {
            //dotpos = n + 1;
            dotpos = len - n - 1;
            cout << "dotpos = " << dotpos << endl;
        }
        else
        {
            result = result * 10 + (str[n] - '0');                       
              //Line above is a  float and character mix as a math equation.
            cout << "result " << n << " = " << result << endl;
        }
    }
    if (dotpos > 0)                                         
        result = result / (power(10, dotpos));              
     cout << "You have set the cost at $" << result << " per gallon." << endl;
    system("pause");
    return 0;
}
Occasional stack around str variable has been corrupted, and that happens when I heavily try to mess with the user input just to check if the program can crash. That's why I need to know how to clear the input after the white space. I solved the stack corruption problem by changing the char array to string, but still not the excess characters that potential users might throw down at the program.
 
     
    