I just want to add that there is a way to get what you want, but it will require to use some a third party library (or that you write the platform dependent code yourself).
As far as I'm concerned, the biggest drawback with cin is that you are required to hit Return, and not just any key.
Assuming you had a key-listener you could quite easily write a function that waits for the user to hit any key. However finding a platform independent key listener is no trivial task, and will most likely require you to load parts of a larger library.
I am thinking something along the lines of:
char wait_for_key() { int key; while ( ! (key == key_pressed(ANY)) ) { this_thread::yield(); } return convert_virtual_key_to_char(key); } The actual function would obviously be quite different from what I wrote, depending on the library you use.
I know the following libraries have keylisteners (Feel free to add more in an edit if you know of any.):