Re: [問題] 不要用system("pause");?
假如system("pause");用了會有什麼嚴重的後果
那大家就不會用 今天就不會爭論這個話題了
也就是說用了根本不會怎樣 是意識型態問題 XD
其實用這個也不過就是圖個方便 看個結果而已
因為你寫個hello world還要開console出來跑就很麻煩啊
如果用cin.get()的話 你前面還要多加一行 cout<<"按enter鍵關閉"; 還是很麻煩
不要想說你停下來使用者自然會去按enter 他會等很久 以為當了
然後你還要考慮cout多國語言的問題 這是個國際化以及本土化的時代 XD
另外 portable的問題說真的也不嚴重
我試這行在Fedora Core的bash跑起來只是會說找不到pause這個程式 然後繼續執行完
(反過來 在Windows底下用system("orz"); 之類的也是找不到然後跳過而已)
不portable的東西一堆 這種相比之下根本無關緊要
所以不能用system("pause");的場合主要只剩下以下兩點:
(1)
1-1. 純粹的command-line模式 不是在圖形介面下旁邊會有捲軸的那種
也就是畫面洗掉就不見了的情況 而且
1-2. 資料超過一頁 必須暫停下來看 而且
1-3. 非Windows
(2)
在非Windows的圖形介面底下(KDE之類的)跑這程式 視窗一閃而逝
例如一般用putty連到Linux工作站的情況下
system("pause");大不了只是失效 再捲回去看就好了
而資料太多的時候我會覺得還不如輸出到檔案 跑完再用文字編輯器慢慢看
所以(1)基本上是可以避開
(2)大概就真的無法避開了 那種時候還是用別招吧
總之我的結論是 大部份情況都無害 就用吧 XD
--
補充一點
有沒有覺得我說的理由都不足以說服你棄cin.get()投system("pause")呢
沒錯 差別就是這麼微不足道 XD
所以我一開始就說了 這是意識型態問題 是"我爽用/我不爽用"的問題 XD
※ 引述《That5566is78 (5566反串好累)》之銘言:
: 真的不要用system("PAUSE"); ?
: http://www.gidnetwork.com/b-61.html
: 剛剛無聊GOOGLE c++ SYSTEM PAUSE 跑出的第一個
: 他有幾個理由
: ●Only in DOS & Win : not portable
: ●It's a very expensive and resource heavy function call
: : 用推土機開門(殺雞用牛刀)
: 系統步驟:
: 1.suspend your program
: 2.call the operating system
: 3.open an operating system shell (relaunches the O/S in a sub-process)
: 4.the O/S must now find the PAUSE command
: 5.allocate the memory to execute the command
: 6.execute the command and wait for a keystroke
: 7.deallocate the memory
: 8.exit the OS
: 9.resume your program
: ●You must include a header you probably don't need: stdlib.h or cstdlib
: Advice: in C :getchatr()
: C++:cin.get()
: 不知道各位高手覺得如何?
: 我是新手 無法提供意見 囧rz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.34.238.72
※ 編輯: AntaresStar 來自: 218.34.238.72 (05/16 21:11)
→
05/16 21:17, , 1F
05/16 21:17, 1F
→
05/16 21:29, , 2F
05/16 21:29, 2F
→
05/16 21:29, , 3F
05/16 21:29, 3F
推
05/16 22:01, , 4F
05/16 22:01, 4F
推
05/16 22:34, , 5F
05/16 22:34, 5F
推
05/16 22:44, , 6F
05/16 22:44, 6F
→
05/16 22:45, , 7F
05/16 22:45, 7F
→
05/16 22:45, , 8F
05/16 22:45, 8F
→
05/16 22:48, , 9F
05/16 22:48, 9F
→
05/16 22:49, , 10F
05/16 22:49, 10F
推
05/16 23:01, , 11F
05/16 23:01, 11F
→
05/16 23:02, , 12F
05/16 23:02, 12F
推
05/16 23:40, , 13F
05/16 23:40, 13F
→
05/16 23:41, , 14F
05/16 23:41, 14F
→
05/16 23:43, , 15F
05/16 23:43, 15F
→
05/16 23:43, , 16F
05/16 23:43, 16F
注重system("pause")的跨平台性其實根本就不專業 只不過是拘泥小節
真正的跨平台程式 是用
#ifdef _WINDOWS
#define SOMETHING
#else
#define SOMETHING_ELSE
#endif
這種方式在寫的
而不是說什麼不跨平台就不用 那根本啥也不能用
※ 編輯: AntaresStar 來自: 218.34.238.72 (05/17 00:32)
推
05/17 02:07, , 17F
05/17 02:07, 17F
→
05/17 02:08, , 18F
05/17 02:08, 18F
→
05/17 02:10, , 19F
05/17 02:10, 19F
→
05/17 02:11, , 20F
05/17 02:11, 20F
→
05/17 02:13, , 21F
05/17 02:13, 21F
→
05/17 20:23, , 22F
05/17 20:23, 22F
→
05/17 20:23, , 23F
05/17 20:23, 23F
推
05/17 21:10, , 24F
05/17 21:10, 24F
→
05/17 21:11, , 25F
05/17 21:11, 25F
→
05/17 21:11, , 26F
05/17 21:11, 26F
→
05/18 06:25, , 27F
05/18 06:25, 27F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):