CLion中while(cin>>x)輸入EOF終止後,後面的語句不被執行?
各位巨巨好,題主正在學習accelerated c++,在使用clion的過程中遇到了如下問題。書上的示例代碼是
#include &
#include &
#include &using std::cin;
using std::cout;
using std::endl;
using std::setprecision;
using std::string;
using std::streamsize;int main()
{
cout &<&< "Please enter your first name: "; string name; cin &>&> name;
cout &<&< "Hello, " &<&< name &<&< "!" &<&< endl; cout &<&< "Enter your midterm and final exam grads: "; double midterm, final; cin &>&> midterm &>&> final;cout &<&< "Enter your homework grades, " "followed by end-of-file: "; int count = 0; double sum = 0; double x; while (cin &>&> x)
{
++count;
sum += x;
}streamsize prec = cout.precision();
cout &<&< "Your final grades is " &<&< setprecision(3) &<&< 0.2 * midterm + 0.4 * final + 0.4 * sum / count &<&< setprecision(prec) &<&< endl; return 0; }這段代碼的目的是輸入期中期末成績和歷次作業成績,給出平均成績。運行代碼,輸入了相應的名字、期中、期末成績,在執行while(cin &>&> x),輸入歷次平時成績後。題主輸入cmd+D(已確認是clion中的EOF快捷鍵),發生了如下現象
可見雖然終止了while但是後面的輸出也不執行了。求問各位這是神馬原因?有辦法調整嗎(;′⌒`)...謝謝
今天同樣為這個問題所困擾,調試的時候發現,好像clion將ctrl+d當做SIGHUP信號進行處理了,並沒有將其轉換成流結束指示器EOF。
這是Clion IDE的一個bug,EOF之後的stdout輸出會丟失掉。下列方法可以暫時解決。
- Go to the Find Action Dialog box (CMD+SHIFT+A)
- Search for "Registry..."
- Untick run.processes.with.pty
有很多ide的控制台都有EOF這個問題 包括eclipse和clion。。
你可以試試codeblocks 雖然界面比較丑。clion可以點擊那個小蟲子的debug圖標進行運行,那會彈出一個黑框進行輸入,就沒有控制台的問題了。我這裡測試沒有問題,估計就是cmd+D直接將程序終止了。
沒有用過CLion,你試試Ctrl+Z?
推薦閱讀:
※關於Vert.x的冷知識
※要獲得「機器學習或數據科學」的工作,到底選哪種編程語言更好?
※多維度分析2017年最熱門的編程語言
※C語言基礎:函數的聲明與定義
※AppleScript類自然語言與非英語語法設計