2015-09-12 51 views
1
#include <iostream> 
using namespace std; 


int main(int argc, char** argv) { 

char text[200]; 
int input; 


cin>>input; 
if (input == 1) 
{ 
    cin.getline(text, 200); 
    cout<<text<<"\n"; 

} 
else if(input == 0) 
{ 
    cout <<"You entered a 0"; 
} 

return 0; 
} 

我想做一個小程序,用戶給出的輸入是1或0.如果用戶輸入1,那麼他可以輸入一個完整的句子並將其存儲在字符數組中。我的問題是,當我把cin.getline()放在if語句中時,它不再起作用。這是爲什麼?爲什麼cin.getline()不起作用(C++)?

感謝

+1

在調用'getline()'之前,必須從第一個輸入操作中讀取剩餘的換行符。 –

+0

在閱讀新文章之前,您必須刷新輸入 – NemanjaT

回答

1

這並不是說cin.getline()不起作用。它完全按照它的要求:閱讀下一行的文本行。恰巧cin >> input;已經讀取了一些數字,然後在輸入緩衝區中留下了第一個非數字輸入 - 通常是換行符,除非您輸入的不是數字。

你可以通過調用cin.ignore()來解決這個問題,它將「讀取所有內容到下一個新行並將其扔掉」。

理想情況下,你應該決定是否要使用cin >>cin.getline(),並使用一個或另一個,但這就意味着然後讀取你的代碼轉換爲數字文本和字符串,如果你是一個新手,這可能比你想要做的更復雜一點。

+0

非常感謝您的操作! – Bex