我不明白爲什麼我必須在while循環中再次使用cin.get()
。在while循環之前使用cin.get()
做同樣的事情,cin.get()
會在while循環中做同樣的事情。它讀取我在輸入空格時輸入的一串文本。但顯然在這個程序中,我試圖將所有的文本轉換爲矢量。如果我要從while循環中排除cin.get(next)
,並且只有line.push_back(next)
,那麼程序會收到錯誤並崩潰。在while循環中使用cin.get()的目的是什麼?
請解釋它爲什麼這樣做。謝謝
//Demonstration of the generic find function
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
vector<char> line;
cout << "Enter a line of text: \n";
char next;
cin.get(next);
while(next != '\n')
{
line.push_back(next);
cin.get(next);
}
return 0;
}
首先閱讀['std :: basic_istream :: get'](http://en.cppreference.com/w/cpp/io/basic_istream/get)。如果你不瞭解它所調用的功能,你就不會明白程序的作用。相關的,你的代碼有一個錯誤。如果偶然發生錯誤狀態,它將循環到無限期尋找一條永不會到來的換行符。 – WhozCraig
它*獲得輸入。不確定混淆來自何處。也許你應該通過調試器運行代碼,以便你可以看到它實際上在做什麼。 – NathanOliver
您可以在循環中使用它以使其運行多次。如果你從循環中刪除了該行,那麼所有循環都會一遍又一遍地將同一個字母推向該向量。注意,while循環的結束條件永遠不會到來,如果輸入的話。 –