2015-09-25 18 views
0

我想清楚關於函數的一些疑問差異等

cin.ignore(1,'\n'); 

代碼:

char x[80];  
cin>>x;  
cin.ignore(1,'\n');  

如果用戶輸入的字:保羅·史密斯
做程序的外觀爲單詞中的第一個空格而忽略/刪除剩餘的字符?
因此,該方案只保留並丟棄史密斯?
對嗎?
我感到困惑!請用非常簡單的詞語來解釋,因爲我無法理解Google在這個問題上的解釋。

+0

有用的信息來研究:http://en.cppreference.com/w/cpp/io –

+1

可能[什麼時候,爲什麼我需要在C++中使用cin.ignore()?](http://stackoverflow.com/questions/25475384/when-and-why-do-i-need-to-use-cin -ignore-在-c)的 – NendoTaka

回答

0
cin.ignore(1,'\n'); 

不是很有用。它只會忽略一個字符。

cin.ignore(100,'\n'); 

將忽略多達100個字符,但會在遇到'\n'後停止。

在你的情況,

cin>>x;  

會讀paulx。該行

cin.ignore(1,'\n'); 

將消耗paul後的空間。因此,Smith將留在輸入流中。

因此該程序只保留並丟棄史密斯?

不,我希望從上面可以清楚。

0
cin >> x; 

由於x是一個字符串或char陣列,此讀出來自輸入的一個字(一切直至第一空白字符),並將其存儲在x

cin.ignore(1, '\n'); 

讀取並忽略輸入中的一個字符。它不會讀取整個行的其餘部分。更一般地說:

cin.ignore(n, delim); 

讀取和忽略的字符,直到它有兩種讀n字符或達到等於delim一個字符。如果你想忽略,直到線,不管到底是多少個字符,這樣做:

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');