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





