2014-07-13 1 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 >> 연산자 아니하다. 나머지는 다음 공백까지 버려집니다. 올바른 값을 얻지 못할 수도 있습니다 (예 : 누군가 "1.0"대신 "ABCDEF"로 피드하는 경우). 그러나 버퍼 오버 플로우에 대해 걱정할 필요가 없습니다.

+0

누군가가 이것을하면 어떨까요? double * d = 새로운 double; double & dr = * d; 삭제 d; sampleFunction (dr, dr); – developerbmw

+0

잘못된 포인터를 사용하면 언제든지 잘못된 일이 발생할 수 있습니다. OP의 질문과 관련성이 있는지 모르겠다. OP는 사용자가 cin의 입력을 통해 정의되지 않았거나 불안전 한 행동을 일으킬 수 있는지 여부를 걱정하기 때문이다. – stix