C++ C++;cin输入直接存储以通过参考变量传递-危险?

C++ C++;cin输入直接存储以通过参考变量传递-危险?,c++,security,reference,C++,Security,Reference,将cin输入直接分配给通过引用传递的双变量是否危险?如果是这样,除了不通过引用传递之外,我可以采取什么措施来防范危险的输入 示例如下: void samplefunction(double &var1, double &var2) { cout << "Enter something: "; cin >> var1; cout << endl; cout << "Enter something: ";

将cin输入直接分配给通过引用传递的双变量是否危险?如果是这样,除了不通过引用传递之外,我可以采取什么措施来防范危险的输入

示例如下:

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

简短的回答是否定的,因为cin>>操作员将只读取填充类型所需的数据。其余部分将被丢弃,直到出现下一个空格。您可能无法获得正确的值,例如,如果有人输入“ABCDEF”而不是“1.0”,但您不必担心缓冲区溢出。

@collone-除了下面stix的答案之外,您还需要验证读取的内容。我不清楚
samplefunction
是否正在验证输入。验证为检查输入是否已成功存储?如果有人这样做怎么办?double*d=新的double;double&dr=*d;删除d;采样函数(dr,dr);任何时候你使用无效的指针,坏事就会发生。我不确定你的例子与OP的问题有什么关联,因为OP似乎担心用户是否会通过输入cin导致未定义或不安全的行为。