inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

알고리즘 교안 공부중에 25쪽 버퍼 플래쉬 관련 질문이 있습니다.

490

김용주

작성한 질문수 1

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요 큰돌님

올려주신 알고리즘 교안 공부중에 25페이지에 나온 버퍼 플래쉬라는 내용이 이해가 안되어 질문 올립니다.

getline 을 여러번 사용할 때 버퍼 플래시를 하고 받으면 된다고 적혀있는데, 이 부분에 대한 자세한 설명이 나오지 않아서 getline을 여러번 사용할 때 버퍼 플래시를 사용하여 한번 받고 getline을 여러번 사용하는지 궁금합니다.

혹시 추론해보건데, 앞서 정수형 변수 T에 getline을 몇번 사용할건지에 대한 값을 받는 문장이 있는데 여기에서 사용자가 입력할 때 발생하는 개행문자 \n을 처리하기 위해 사용하는 것이라고 생각이 드는데 맞는 생각인가요??

C++ 코테 준비 같이 해요!

답변 1

3

큰돌

안녕하세요 ㅎㅎ

우리가 프로그램을 만들고 실행을 시키고 입력을 하게 되면 버퍼에 먼저 들어가게 됩니다.

그리고 버퍼로 부터 ~~~ cin이나 getline으로 그 버퍼에 담긴 입력값을 가져오는 것이죠.

이 때 getline은 개행문자 \n을 기반으로 끊어서 가져오는 함수입니다.

근데 저 예제 같은 경우 T를 입력 + 엔터(\n)가 들어가게 됩니다.

정수입력 >> 엔터 >> 문자열인데

여기서 엔터는 필요없는 값인데 들어가 버리게 되는 것이죠.

이 엔터를 처리를 하기위해 저런 것을 하는 것입니다. 이런식으로 제거를 해서 차이를 보시면 눈치를 채실 수 있으실겁니다.

#include <bits/stdc++.h>
using namespace std;     
int T; 
string s;
int main(){
	cin >> T;
//	string bufferflush;
//    getline(cin, bufferflush); 
	for(int i = 0; i < T; i++){ 
		getline(cin, s); 
		cout << s << "\n"; 
	}  
	return 0;
}
/*
10
aaa
bbb
ccc
dddd
asdlkfj alsjdklj
*/

또한, 버퍼플러시에 대한 설명은 교안 내의

endl보다는 “\n”을 써라. 

앞의 항목에서 자세히 설명하고 있는데요.

확인 부탁드립니다.

1-E질문입니다!

0

517

2

3-L 틀린 부분 피드백 부탁드립니다.

0

817

2

1-A문제 순열재귀함수 질문입니다.

0

381

1

1-A 일곱난쟁이문제입니다

0

454

1

문제 풀 때 방향성에 대해

0

798

1

맥에서 vs code로 실행 관련 질문입니다

0

522

1

17071번 메모리 초과

0

386

1

1-C질문입니다!

0

418

2

2-B BFS 시간초과질문

0

629

2

1-O 13번 라인

0

440

1

6-J 놀이공원 문제 질문

0

380

1

구현관련 질문

0

482

1

강의 교안

0

318

1

실력을 더 올리고나서 강의를 보는 것이 맞을까요?

0

545

1

안녕하세요! 재귀함수에 관해서 질문드립니다

0

535

1

1-K

0

473

2

3-G번 질문있습니다.

1

473

3

3-C 실행 시간 질문드립니다.

0

493

1

4-A 문제 풀이 질문있습니다.

0

590

2

비트마스킹 연산자 "1의 보수" 영문 표기법

0

435

1

격자탐색 문제에서 BFS 시간복잡도 질문드립니다.

0

334

1

3-O go 함수 질문 드립니다.

1

446

2

4-A 출력 질문

0

303

1

1주차 1-O 질문드립니다

0

255

1