-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
std::cin.clear() 의 기능에 대한 질문입니다.
21.06.10 17:48 작성 조회수 866
0
안녕하세요. 좋은 강의와 매번 친절한 답변 덕분에 좋은 환경속에서 공부하고 있습니다. 감사합니다.
질문이 있어서 글을 남깁니다.
std::cin.clear(); 의 기능에 대한 질문입니다.
해당 기능은 'cin으로 받은 것 중 버퍼에 쌓인 것을 지워준다.' 로 알고 있습니다. 그런데 아래와 같이 코드를 돌렸을 때
std::cin.clear();를 했음에도 불구하고 버퍼에 아직 쌓여있는것 같아서 이렇게 질문을 남깁니다.
---코드 ---
#include <iostream>
int main()
{
using namespace std;
int x;
int y;
int z;
// 예시로 123 456 789 를 입력함
cin >> x;
std::cin.clear(); //퍼버에 쌓인것을 다 지워준다.
// 버퍼에 있는 것을 모두 지웠으니 입력되지 않을 것으로 기대함
cin >> y;
cin >> z;
cout << x <<" " << y << " " << z <<endl;
return 0;
}
제가 혹시 잘 못 코딩한거라던지
cin.clear() 의 기능에 대해 잘 못 알고 있는게 있을까요?
답변을 작성해보세요.
4
안소
2021.06.11
안녕하세요 :)
cin.clear() 는 버퍼를 비우는 것이랑 상관 없습니다. clear() 역할은 cin 내부 상태 플래그 값을 초기화시키는 것입니다.
cin 은 현재 입력이 성공적인지 실패인지와 같은 이런 상태를 비트 플래그로 저장을 합니다. clear() 는 현재 입력 실패 상태인지 성공 상태인지를 나타내는 이 "상태"를 초기화 할 때 사용합니다.
버퍼 비우는건 cin.ignore 과 더 가까워보이네요~!
Becher Wasser
질문자2021.06.11
아! cin.clear() 가 버퍼값을 초기화 하는것이 아니라 상태를 초기화 하는것이었군요. 명확한 답변 감사합니다. 알려주신 덕분에 제대로 이해할 수 있게 됐습니다.
답변 1