1
當處理從cin讀取不同類型的輸入時,我原本以爲開始閱讀就好像輸入是整數。如果失敗,請將其作爲字符串讀取。讀取來自cin的不同類型的輸入
它工作正常,直到我試圖讀取諸如「+」,「 - 」等運算符。進入if(!fail)後,它會要求輸入另一個輸入(如「+」,「 - 」等操作符)。這期間,輸入甚至不應該被讀取
這裏是代碼:
void RPNCalc::run()
{
int numInput; bool boolInput = false; string stringInput; char charInput;
while (stringInput != "quit")
{
cin >> numInput;
if (!cin)
{
cout << "not an int" << endl;
cin.clear();
cin >> stringInput;
cout << stringInput << endl;
readNonNumInput(stringInput, boolInput);
}
else
{
Datum temp = Datum(numInput);
calculator.push(temp);
}
}
}
當讀取運營商爲CIN,它無法讀取它作爲一個整數後,它在某種程度上失去了運營商在緩衝。例如,如果我輸入「+」,它將無法被讀取爲整數,因此它將打印語句「not an int」。但是,由於「+」以某種方式在緩衝區中丟失,因此沒有任何內容可讀入到stringInput中。而對於其他字符串輸入,它不能被讀作整數,並且該字符串仍然存在於緩衝區中,隨後可以讀入到stringInput中。
這是我對這裏發生的事情的理解。但我可能是錯的。