pausing a program before it terminates

I've found a number of different ways to "pause" a program before it terminates, and each one seems to have its own dear friends and bitter enemies.

The most popular (and usually most condescendingly offered) is to open up the command line, cd to the directory your program is in, and run it from there. Effective (unless your program is in a windows folder called C++; the command line doesn't like the "+" symbol), but not terribly practical. If I were going to write a program for a computer beginner, I'd have to explain the process of opening the program (probably multiple times to start and again every time the person needed the program; plus, who want to have to go to the command line when they could double-click the .exe much faster).

Other methods I've seen:

system("pause"); (People seem to hate this one.)

getchar();
cin.get; (I've never gotten this or the next one to work)
std::cin.get();
cin<<randomvariable; (seems clunkish to me)

Can someone talk about the dos and don'ts of these methods? I've seen lots of commentary on what/what not to use, but little in the way of explanation. Which method represents best practices?
My Favorite:
1
2
3
cin.clear(); //clear any errors
cin.sync(); //ignore any previously typed characters
cin.ignore(); //pause until you press Enter 
I seem to recall seeing some haters for this one too. What are the pros/cons of this method, and why is it your favoriate?
I just do this:

while (true) {}
Topic archived. No new replies allowed.