2014-07-13 28 views
1

將cin輸入直接賦值給通過引用傳遞的雙變量會危險嗎?如果是這樣,我可以採取什麼措施來防範危險投入 - 除了不通過參考。下面C++ cin輸入存儲直接通過引用變量傳遞 - 危險?

例子:

void samplefunction(double &var1, double &var2) 
{ 
    cout << "Enter something: "; 
    cin >> var1; 
    cout << endl; 
    cout << "Enter something: "; 
    cin >> var2; 
} 
+0

答案是否定的。 – Deduplicator

+0

@Colonel - 除了stix的答案,您需要驗證已閱讀的內容。我不清楚'samplefunction'是否驗證輸入。 – jww

+0

驗證輸入是否成功存儲? –

回答

2

簡短的回答,沒有,因爲CIN >>運營商將只讀取儘可能多的數據,因爲它需要填補的類型。其餘的被丟棄,直到下一個空白。例如,如果某人輸入「ABCDEF」而不是「1.0」,您可能無法獲得正確的值,但您不必擔心緩衝區溢出。

+0

如果有人這樣做? double * d = new double; double&dr = * d; 刪除d; sampleFunction(dr,dr); – developerbmw

+0

任何時候你使用無效指針,壞事都會發生。我不確定你的例子與OP的問題相關的是什麼,因爲OP似乎擔心用戶是否可以通過在cin上輸入引起未定義或不安全的行爲。 – stix