Which is best way to pause the console in C++ programs?
- using
cin.get()
- or using
system("pause")
- or using C functions like
getch()
orgetchar()
?
Is it true that use of system("pause")
leads to non portable code and can't work in UNIX?
Is cin.get() is better to use to pause console?
在C和C++里,要尽量避免使用 system("pause")
system("pause")
I've never understood why system("PAUSE") is so popular. Sure it will pause a program before it exits. This pause is very useful when your IDE won't wait as you test a program and as soon as the program finished the window closes taking all your data with it.
But using system("PAUSE") is like burning your furniture for heat when you have a perfectly good thermostat on the wall.
Many people, instructors included, for some inexplicable reason think that making a call to the operating system and running a system command to temporarily halt a program is a good thing. Where they get this idea is beyond me. Reasons:
-
It's not portable. This works only on systems that have the PAUSE command at the system level, like DOS or Windows. But not Linux and most others...
-
It's a very expensive and resource heavy function call.
It's like using a bulldozer to open your front door. It works, but the key is cleaner, easier, cheaper. What system() does is:-
suspend your program
-
call the operating system
-
open an operating system shell (relaunches the O/S in a sub-process)
-
the O/S must now find the PAUSE command
-
allocate the memory to execute the command
-
deallocate the memory
-
exit the OS
-
resume your program
There are much cleaner ways included in the language itself that make all this unnessesary.
-
-
You must include a header you probably don't need: stdlib.h or cstdlib
It's a bad habit you'll have to break eventually anyway.
Instead, use the functions that are defined natively in C/C++ already. So what is it you're trying to do? Wait for a key to be pressed? Fine -- that's called input. So in C, usegetchar() instead. In C++, how about cin.get()? All you have to do is press RETURNand your program continues.
Note: the origin of the article isn't specified.
++