방법1
다음 코드를 int main 내부에 넣어줍니다.
- ios_base::sync_with_stdio(0);: C++ iostream과 C stdio 사이의 동기화를 비활성화하여, iostream 라이브러리가 stdio와 독립적으로 작동하도록 합니다. 이렇게 하면 스트림 간의 상호작용 없이 C++의 iostream이 더 빠르게 작동할 수 있습니다.
- cin.tie(0)와 cout.tie(0): cin과 cout의 결합을 끊어서, cin이 불릴 때마다 cout이 자동으로 플러시되지 않도록 합니다. 플러싱을 줄이면 불필요한 입출력 지연이 줄어들어 속도가 개선됩니다.
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
주의점
- 이 설정을 적용하면 C++의 iostream (cin, cout)과 C의 stdio (scanf, printf)를 함께 사용할 때 순서가 보장되지 않아 혼동될 수 있습니다.
- C++ 스트림의 thread 안전성도 보장되지 않으므로 멀티스레딩 환경에서는 신중하게 사용하는 것이 좋습니다
방법2
endl 대신 "\n" 을 사용합니다.
cout << "문자열" << "\n";
- endl은 개행을 수행할 뿐 아니라 출력 버퍼를 비우는 flush 동작을 수행하여, 버퍼에 있는 내용을 강제로 출력합니다.
- endl 을 사용했을때: 버퍼에 값 입력 -> 값출력 -> 버퍼에 값 지우기 -> 버퍼에 값 입력 ...
- "\n" 을 사용했을때: 버퍼에 값 입력 -> 값 출력 -> 버퍼에 값 입력 -> 값 출력 ...
- "\n"은 단순히 줄바꿈을 수행하며, flush 동작이 따르지 않기 때문에 endl보다 속도가 더 빠릅니다.
\n을 사용하면 버퍼가 언제 비워지는가?
버퍼가 가득 찰 때 또는 프로그램이 종료될 때까지 값을 출력하지 않고 버퍼에 계속 쌓습니다.
특정 시점에 버퍼를 비우며 출력 (버퍼 비우기나 flush는 버퍼가 가득 찼거나 cout이 닫힐 때 자동으로 이루어집니다.
'C++' 카테고리의 다른 글
c++ 문자열 추출하기 (0) | 2024.11.07 |
---|---|
c++ string 값 거꾸로 뒤집기 (0) | 2024.11.01 |
c++ a space is required between consecutive right angle brackets (use '> >')gcc 에러 해결 (0) | 2024.11.01 |
C++ 문자열에서 특정값 포함되어 있는지 확인하기 faet. find 함수 (0) | 2024.10.30 |
C++ 키 입력받기, 값 출력하기 (0) | 2024.10.29 |