我想清楚關於函數的一些疑問差異等
cin.ignore(1,'\n');
代碼:
char x[80];
cin>>x;
cin.ignore(1,'\n');
如果用戶輸入的字:保羅·史密斯
做程序的外觀爲單詞中的第一個空格而忽略/刪除剩餘的字符?
因此,該方案只保留並丟棄史密斯?
對嗎?
我感到困惑!請用非常簡單的詞語來解釋,因爲我無法理解Google在這個問題上的解釋。
我想清楚關於函數的一些疑問差異等
cin.ignore(1,'\n');
代碼:
char x[80];
cin>>x;
cin.ignore(1,'\n');
如果用戶輸入的字:保羅·史密斯
做程序的外觀爲單詞中的第一個空格而忽略/刪除剩餘的字符?
因此,該方案只保留並丟棄史密斯?
對嗎?
我感到困惑!請用非常簡單的詞語來解釋,因爲我無法理解Google在這個問題上的解釋。
cin.ignore(1,'\n');
不是很有用。它只會忽略一個字符。
cin.ignore(100,'\n');
將忽略多達100個字符,但會在遇到'\n'
後停止。
在你的情況,
cin>>x;
會讀paul
到x
。該行
cin.ignore(1,'\n');
將消耗paul
後的空間。因此,Smith
將留在輸入流中。
因此該程序只保留並丟棄史密斯?
不,我希望從上面可以清楚。
cin >> x;
由於x
是一個字符串或char
陣列,此讀出來自輸入的一個字(一切直至第一空白字符),並將其存儲在x
。
cin.ignore(1, '\n');
讀取並忽略輸入中的一個字符。它不會讀取整個行的其餘部分。更一般地說:
cin.ignore(n, delim);
讀取和忽略的字符,直到它有兩種讀n
字符或達到等於delim
一個字符。如果你想忽略,直到線,不管到底是多少個字符,這樣做:
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
有用的信息來研究:http://en.cppreference.com/w/cpp/io –
可能[什麼時候,爲什麼我需要在C++中使用cin.ignore()?](http://stackoverflow.com/questions/25475384/when-and-why-do-i-need-to-use-cin -ignore-在-c)的 – NendoTaka