대체 솔루션을 찾는 데 더 많은 관심이있어 제목이 오해의 소지가 있습니다. 내 직감은 버퍼가 비어 있는지 여부를 확인하는 것이 가장 이상적인 솔루션이 아니라는 것입니다 (적어도 내 경우에는).C++ std :: cin 버퍼가 비어 있는지 확인하는 방법
저는 C++을 처음 사용하고 Bjarne Stroustrup의 C++을 사용한 프로그래밍 원리와 실습을 따르고 있습니다. 저는 현재 제 7 장에 있습니다. 우리는 6 장에서 계산기를 "정제"하고 있습니다. 질문의 끝 부분에 소스 코드에 대한 링크를 넣을 것입니다.
기본적으로 계산기는 세미콜론으로 구분 된 사용자 입력
> 5+2; 10*2; 5-1;
= 7
> = 20
> = 4
>
하지만 지난 2 개 답변 프롬프트 문자 ('>')의 제거, 그리고 사용자의 입력을 요구하는 경우에만 다시 표시 것입니다. 첫 번째 본능은 버퍼가 비어 있는지 확인하는 방법을 찾고, 그렇다면 문자를 알아 내고 그렇지 않은 경우 대답을 시도하는 것입니다. 그러나 약간의 인터넷 검색 결과 나는 처음에 생각한만큼 쉬운 일이 아니라는 것을 깨달았습니다 ... 그리고 그것은 시작하기에 좋지 않을 수도 있습니다.
본질적으로 제 질문은 여러 입력이있을 때 마지막 두 답변에 '>'문자를 제거하는 방법입니다. 그러나 cin 버퍼 을 확인하는 것이 가능하다면이고 이 아니라이 아닙니다. 결국 나에게 나쁜 생각이 들게됩니다.
소스 코드 : https://gist.github.com/Spicy-Pumpkin/4187856492ccca1a24eaa741d7417675
헤더 파일 : http://www.stroustrup.com/Programming/PPP2code/std_lib_facilities.h
이^당신은이 헤더 파일이 필요합니다. 나는 그것이 저자 자신에 의해 쓰여졌다 고 추정한다.
편집 : 웹에서 몇 가지 해결책을 찾아 보았지만 솔직히 말해서 나에게 어떤 의미가 없었습니다. C++을 선택하고 4 일이 지났기 때문에 프로그래밍에 대한 배경이 매우 희박하기 때문에 때로는 인터넷 검색도 조금 힘들 수 있습니다.
막대기로 찌그러 뜨 렸는지 확인하십시오. –
비슷한 질문 : http://stackoverflow.com/questions/3317740/checking-data-availability-before-calling-stdgetline –
이 경우에는'std :: getline'을 사용하여 한 번에 한 줄씩 읽을 수 있고, 각 줄 이후의 프롬프트 –