2014-07-13 26 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