인프런 커뮤니티 질문&답변

성우님의 프로필 이미지
성우

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

강의교안 30쪽 getline 질문이 있습니다.

해결된 질문

작성

·

182

0

string bufferflush;

getline(cin, bufferflush);

이 부분에서 질문이 있는데요.

 

이 부분을 제가 이해하기로는 cin을 수행할 때 \n부분 전까지만 입력을 받고 변수에 할당한 후 \n은 그대로 cin 입력 버퍼에 남기 때문에 저걸 없애기 위해서 string bufferflush를 선언한 후 getline(cin, bufferflush)를 수행한다고 이해가 되는데요.

제가 알기로는 cin.ignore()도 입력 버퍼를 한 개 지우는 역할을 한다고 들었는데 그냥 cin.ignore()로 대체하면 두 줄짜리 코드를 그냥 간단하게 한 줄로 끝낼 수 있는데 이게 더 효율적이지 않나 싶어서 질문을 드립니다.

 

 

답변 1

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 성우님 ㅎㅎ

저도 cin.ignore()을 알고 있는데요. ㅎㅎ

그게.. 안될때가 있습니다.

저도 성우님이 이야기 하신 것처럼 알고 있는데 이상하게 안될 때가 있습니다.

따라서 그냥 특정한 정수를 받고 그 정수를 기반으로 많은 줄을 getline으로 받을 때는 다음과 같은 코드로 하시는게 좋습니다.

string bufferflush;

getline(cin, bufferflush);

 

감사합니다.

성우님의 프로필 이미지
성우

작성한 질문수

질문하기