而使用std :: CIN >>數以下列方式:CIN:檢查次數爲整數或浮點即使浮點值是1.000
float number;
while(std::cin >> number) {
//perform a check here if possible
//if number does not contain a decimal point do this
for(int i = 0; i < number; i++) {
std::cin >> readMoreFloats;
}
//otherwise read 1000 more floats
}
是有辦法,以便能夠區分以下類型的行:
1.500 (1000 more floats)
2 2.000 2.000
這些行將以float或int開頭。如果行以浮點數開始,我想讀取1000個浮點數。如果它是一個int,我想讀取這個浮點數。我知道我可以將浮點數轉換爲int,並檢查鑄造的int是否等於浮點數,但當浮點數爲1.000等平坦值時,這不起作用。
我寧願不看使用函數getline整行(),因爲後記分割是耗時的,我已經知道,所有輸入的是,除了可能是第一個數字浮動。另一種方法是將每行的第一個值作爲字符串讀入並檢查它是否包含句點。有沒有辦法,沒有首先讀取輸入作爲一個字符串,檢查這個?或者是需要的字符串步驟。
由於「一把手」被聲明爲float則總是被儲存爲float,無論用戶是否進入1.000或只是簡單的1因此,沒有,沒有辦法,你的代碼可能可以區分這兩種情況。 – Stuart