일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 본즈앤올
- C++
- Machine Learning
- CLion
- standford University
- 프로그래밍
- #define
- Runtime constants
- 단항연산자
- coursera
- 이코테
- 연산자
- decimal
- 홍정모님
- classification problem
- 코딩테스트
- const
- Greedy
- compile time constants
- 형변환
- Andrew Ng
- 기계학습 기초
- sizeof()
- 기계학습
- #endif
- regression problem
- algorithm
- 코드블럭 오류
- 나동빈님
- 학습 알고리즘
- Today
- Total
wellcome_공부일기
C++ | 02.08 std::endl vs ‘\n’ 그리고 std::flush 본문
<목차>
1. std::endl vs ‘\n’
2. std::endl의 특징
3. ‘\n’의 특징
4. std::flush란?
std::endl vs ‘\n’
일반적으로 콘솔로 텍스트를 출력할 때 std::endl보다 '\n' 문자를 사용하는게 선호됩니다.
그 이유는 std::endl 와 ‘\n’가 ' Flush '를 하느냐 안하느냐의 차이가 있습니다.
여기서 ' Flush ' 란 버퍼에 담긴 데이터가 모두 쏟아지는 것을 말합니다.
std::endl의 특징
- std::endl을 사용하면, 커서를 다음 줄로 옮기고, 출력을 "Flush"하는 두 가지 작업을 하기 때문에, 약간 비효율적임
(std::endl의 역할인 Flush는 화면에 결과물이 모두 그리고, 즉시 나타나는지 확실히 해야 하는 일을 함)
- 왜냐면 std::cout을 사용하여 콘솔에 텍스트를 쓸 때, std::cout은 텍스트를 보통 어떻게서든 출력하여 쏟아냄
- 만약에 std::cout으로 출력이 되지 않다면, 텍스트가 중요하지 않다는 뜻
- 그래서 일반적인 텍스트 출력 시, std::endl가, " Flush했는가? "는 것은 거의 중요하지 않게 됨
#include <iostream>
using namespace std;
int main()
{
cout << '\n' << endl;
cout << "This is first line" << endl;
cout << "second line";
return 0;
}
출력문값
This is first line
second line
Process finished with exit code 0
- 첫번째 명령문에서 \n과 std::endl으로 두개의 줄바꿈이 일어남
- 두번째 명령문에서 std::endl으로 줄이 바뀐 후(커서가 다음 행으로 이동 후), 세번째 명령문이 실행됨
‘\n’의 특징
- '\n' 문자는 커서를 다음 행으로 이동시키지만 불필요한 플러시를 하지 않으므로 성능이 더 좋음
- 하지만 '\n' 문자는 Flush를 하지 않으므로, 긴 문장 출력 시 버퍼에 담겨서 안나올 수 있음
- 장점으로는, '\n' 문자가 std::endl 보다 더 짧고 기존의 텍스트에 삽입될 수 있기 때문에 읽기 쉬운 경향이라는 점이 있음
#include <iostream>
using namespace std;
int main()
{
using namespace std;
/* recognizing as a single character using \ */
cout << int('\n') << endl; //output: 10
/* printing " using \ */
cout << " \"This is War!\" " << endl; //output: "This is War!"
return 0;
}
- 텍스트 앞에 \을 붙이면 컴퓨터는 하나의 문자로 인식 -> 혼자 쓰일 경우에 ' 따옴표 '를 사용
- 예를 들어, \n은 두 문자처럼 보이지만, 컴퓨터는 n하나면 인식함(n이 new line을 뜻하는 하나의 문자로 봄)
- \를 이용하여 "을 출력할 수 있음(물론 ' 도 가능)
'\n'을 두 가지 다른 방법으로 사용하는 예
#include <iostream> // for std::cout
using namespace std;
int main()
{
int x{ 5 };
std::cout << "x is equal to: " << x << '\n'; // Using '\n' standalone
std::cout << "And that's all, folks!\n"; // Using '\n' embedded into a double-quoted piece of text (note: no single quotes when used this way)
return 0;
}
- 커서를 다음 행으로 이동하기 위해 '\n'을 단독으로 사용할 경우 작은 따옴표가 필요하다는 점에 유의
- 이미 이중 따옴표의 텍스트에 포함된 경우, 작은 따옴표는 필요하지 않음
std::flush란?
커서를 다음 행으로 줄바꿈하지 않고 Flush하는 것을 말합니다.
std::endl와 Flush한다는 비슷한 기능을 가지지만, 줄바꿈을 하지 않는다는 차이가 있습니다.
#include <iostream>
using namespace std;
int main()
{
cout << "This is first line" << std::flush;
cout << "second line";
return 0;
}
출력값
This is first linesecond line
Process finished with exit code 0
* 해당 글은 홍정모님의 따라 배우는 C++과 learncpp에서 공부한 토대로 작성되었습니다.
'프로그래밍 > C++' 카테고리의 다른 글
C++ | 02.10 기호 상수(Symbolic constants) (0) | 2020.05.11 |
---|---|
C++ | 02.09 리터럴 상수(Literal constants)와 진수들 (0) | 2020.05.10 |
C++ | 02.07. 문자 자료형(Char Data Type) (0) | 2020.05.08 |
C++ | 02.06 Boolean 자료형과 조건문 if (0) | 2020.05.07 |
C++ | 02.05. 부동소수점 수(Floating Point Numbers) (0) | 2020.05.06 |