I'm quite confused as to why this is happening first when I enter a letter instead of a number the else statement gets executed as expected and fail gets printed out and then for some reason I am pretty much prompted to enter a nother character in without the cout printing to the console and even if enter a number it just skips to a new line and waits for more input
It's all about that /n vs. \n. With /n, you're telling cin.ignore() to ignore input until you get a character whose value is 12142, or until you read 1000 characters. Since no character has that value, it just keeps ignoring. If you keep on typing to give it 1000 characters, you'll get some output again.
I never knew that. That's because it treats it as hex literal of sorts? e.g. '/n' -> {47|110} -> {2F|6E} -> 0x2F6E = 12142? Seems like a great way to obfuscate code and introduce bugs...