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

shyanue님의 프로필 이미지
shyanue

작성한 질문수

홍정모의 따라하며 배우는 C++

2.7 문자형 char type

\n vs endl

작성

·

272

1

(19:30 )에서 설명하신 ‘n’과 ‘endl’의 차이가 잘 이해되지 않아 스택오버플로우에 검색해봤는데요

The only difference is that std::endl flushes the output buffer, and ‘n’ doesn’t.

endl은 버퍼에 있는 걸 모두 쏟아내고 n은 그렇지 않다고 해서 (13:10)에 있는 코드로 실험해보았습니다.

char c;

cin >> c;

cout << c << " " << static_cast<int>(c) << endl;

cin >> c;

cout << c << " " << static_cast<int>(c) << endl;

cin >> c;

cout << c << " " << static_cast<int>(c) << endl;

cin >> c;

cout << c << " " << static_cast<int>(c) << endl;

cin >> c;

cout << c << " " << static_cast<int>(c) << "\n" ;

cin >> c;

cout << c << " " << static_cast<int>(c) << "\n";

cin >> c;

cout << c << " " << static_cast<int>(c) << "\n";

cin >> c;

cout << c << " " << static_cast<int>(c) << "\n";

생각대로라면 각각 abcd를 입력했을 때,

endl 에서는 이후의 입력없이 각각 97 98 99 100이 출력되고

n에서는 버퍼가 없으니까, 97이 출력되고 다시 입력받고 할 줄 알았는데 아니더군요 ㅠ

제가 완전히 잘못 생각하고 있는 건가요? 아직 n과 endl의 차이를 모르겠습니다…

답변 2

0

shyanue님의 프로필 이미지
shyanue
질문자

답변 감사드립니다. 일단 완강 후에 차근차근 되짚어 봐야겠네요!

0

홍정모님의 프로필 이미지
홍정모
지식공유자

안녕하세요? 흥미로운 실험을 하고 계시네요. 입출력 시의 버퍼 얘기는 예외처리를 배운 후에 18장에서 자세히 다룹니다. 참고로 위에 가져오신 문장에 들어 있는 flush라는 단어가 그냥 일반적인 용어라고 생각하실 수도 있는데 std::flush도 있으니 참고하세요. 지금 당장은 의문이 깔끔하게 해소가 되지 않아서 답답하시겠지만, 앞으로도 꾸준히 이렇게 호기심을 해소하기 위해 여러가지 실험을 하시면서 공부해나가시면 좋겠습니다.

shyanue님의 프로필 이미지
shyanue

작성한 질문수

질문하기