@integralfx There are two issues here, and they are only accidentaly related :)
One problem is to do with reading from cin, and whether you want to keep your console open or not, you should verify the state of the stream, or risk getting invalid input, especially when you're reading from the stream multiple times, you can get some weird results. That's what is happening above.
The other issue is keeping the console open. I assume you're using an IDE, which launches the console, runs the program and then closes the console when the program exits. Most IDE will have an option for keeping the console open after the program exits. I though I should mention that, but I'm aware that's not the question you asked.
system() is a way to run a command from within your program, as though you were typing it in on the shell. It will actually spawn a new process to execute the command. It is highly inefficient, and platform dependent (your platform may not have "Pause" for example).
It is okay to use system() as quick and dirty way of stopping the program from exiting while you're developing it, but I advise against using it in this fashion as a final solution. Let's just say it makes you look back.
Getting to your actual question, consider the fact that system() is a function not a keyword, so someone has written this function and included it in the library. The equivalent might be a function you write yourself that does not use platform-dependent behaviour.
Consider:
http://www.cplusplus.com/forum/beginner/1988/#msg7682