2012-10-15 12 views
1

我有一些代碼,我想用cin.eof()來阻止我的程序讀取輸入。我正在考慮這樣做:使用cin.eof()

char array[10] 
while(!cin.eof()) 
{ 
    for(int i = 0; i < 10; i++) 
    { 
    cin >> array[i]; 
    } 
} 

而代碼繼續。但是,當我點擊'\ n'時,我的輸出被輸出。當我點擊cntrl + d時,(在UNIX終端上)程序再次執行輸出,然後繼續結束。我如何獲得它,以便我的程序停止閱讀換行符並打印輸出時,只輸入一次cntrl + d?

謝謝。

+1

打破你的循環。 –

+0

打破while循環?我會怎麼做? – user1567909

+0

不,不是'while'循環... –

回答

0

首先,cin.eof()在輸入失敗之前不會執行任何有用的操作。 你永遠不想在循環的頂部使用它。其次,我不清楚你想要做什麼。 類似於:

std::string line; 
while (std::getline(std::cin, line)) { 
    // ... 
} 

也許?這會將一行文字讀入變量line,直到 文件結束;當你遇到文件結束時,輸入將失敗,並且你將離開循環。

+0

如果我不能使用字符串,該怎麼辦?我已經用char數組構建了我的程序 – user1567909

+0

@ user1567909然後,您必須使用成員'istream :: getline',指定長度,並在超過長度時循環或採取其他操作。一般來說,不要使用'string'這種東西是使代碼不必要的複雜和脆弱的一種保證方式。 –