Back in the old days I sometimes used to use getch() if I wanted to read user input, one character at a time. getch() is handy because it doesn't echo characters back to stdout. Unfortunately, getch() reads from the console - not from stdin and these aren't guaranteed to be the same thing.

cin can be used to read from stdin - as can getc() and getchar() but when running the app from a console, they all seem to have the disadvantage of automatically echoing their input back to the user. Is there a way to turn this behaviour off?