C++ Clearing streams, and testing input - multiple issues

I'm currently learning C++ in class, and I have 3 problems with validation. My professor asked me to not user stringstream for validating input. I'm running into a problem where if the user enters two characters 'rr' for example, the error message displays twice (Which is why I just used stringstream originally to test for the first incorrect character). The second problem is if they enter two values, such as -45 -56. Somehow, the second value of 56 is coming to be positive after the loop and the program is running with it, even after I cleared the stream.
Lastly, if a user enters a float into an int, it truncates it - but how do I prevent that from happening? E.g. I only want an int entered. I tried less than and greater then with no avail. Notice in the below posted code, I do not have the truncating problem because the user input is a double - but I think someone should understand the theory of what I'm asking.

Please let me know if the formatting on here is not correct, I was having some issues with pasting it in the block, but it looks like it may be alright now.