在C和C++里,要尽量避免使用 system("pause")
2014-03-17 14:54
507 查看
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://amigniox.blogbus.com/logs/47563613.html
I've never understood why system("PAUSE") is
so popular. Sure it will pause aprogram before it exits. This pause is very useful when yourIDE won't
waitas you test a program and as soon as the program finished the window closes taking all your data with it.
But using system("PAUSE") islike 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 totemporarily
halt a program is a good thing. Where they get thisidea is beyond me. Reasons:
It's not portable. This works only onsystems that havethe PAUSE commandat
the system level, like DOS or Windows. But notLinux and most others...
It's a very expensive and resource heavy function call.
It's like using a bulldozerto open your front door. It works, but the key is cleaner, easier,cheaper. What system() doesis:
suspend your program
call the operating system
open an operating system shell (relaunches the O/S in asub-process)
the O/S must now find the PAUSE command
allocate the memory to execute the command
execute the command and wait for a keystroke
deallocate the memory
exit the OS
resume your program
There are much cleaner ways included in the language itself thatmake all this unnessesary.
You must include a header you probably don'tneed: 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 bepressed? Fine -- that's called input.So
in C, use getchar() instead.In C++, how
about cin.get()?All you have to do is press RETURN
andyour program continues.
Note: the origin of the article isn't specified.
++
http://amigniox.blogbus.com/logs/47563613.html
system("pause")
I've never understood why system("PAUSE") isso popular. Sure it will pause aprogram before it exits. This pause is very useful when yourIDE won't
waitas you test a program and as soon as the program finished the window closes taking all your data with it.
But using system("PAUSE") islike 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 totemporarily
halt a program is a good thing. Where they get thisidea is beyond me. Reasons:
It's not portable. This works only onsystems that havethe PAUSE commandat
the system level, like DOS or Windows. But notLinux and most others...
It's a very expensive and resource heavy function call.
It's like using a bulldozerto open your front door. It works, but the key is cleaner, easier,cheaper. What system() doesis:
suspend your program
call the operating system
open an operating system shell (relaunches the O/S in asub-process)
the O/S must now find the PAUSE command
allocate the memory to execute the command
execute the command and wait for a keystroke
deallocate the memory
exit the OS
resume your program
There are much cleaner ways included in the language itself thatmake all this unnessesary.
You must include a header you probably don'tneed: 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 bepressed? Fine -- that's called input.So
in C, use getchar() instead.In C++, how
about cin.get()?All you have to do is press RETURN
andyour program continues.
Note: the origin of the article isn't specified.
++
相关文章推荐
- C++第1天:在C和C++里,要尽量避免使用 system("pause")
- 使用cin.get()而不是system("pause")来避免c++程序一闪而过
- system("pause")在使用freopen时失效
- 解决C、C++程序执行结果一闪而过的方法---system("pause")、getchar()、cin.get()
- C++使用system( “pause “);来暂停黑窗口
- 查看C/C++程序执行结果的方法------system("pause"),getchar(),cin.get()
- c++中的system("pause")的作用
- system("pause")使用时要加头文件iostream.h
- VS下使用freopen重定向输入流至文件同时使用system("pause")暂停
- C++中的system("pause");
- 解决C/C++程序执行一闪而过的方法(使用getchar,或者cin.get,不推荐system(“pause”))
- 解决C、C++程序执行结果一闪而过的方法---system("pause"
- 为什么 C++ 中提倡尽量避免使用宏 #define(转)
- 解决C、C++程序执行结果一闪而过的方法---system("pause")、getchar()、cin.get()
- C++尽量避免使用指针
- c++避免使用hash_map有性能 问题
- 改善C++ 程序的150个建议学习之建议23:尽量使用C++标准的iostream
- system("pause")所需头文件
- More Effective C++ 阅读笔记(四)-- 避免使用隐式类型转换
- 【C/C++】Linux下使用system()函数一定要谨慎