학습 정리/📖 C,C++

[C에서 C++로 넘어가기] - 3. cin, cout, endl

무딘붓 2023. 1. 4. 12:39

C언어만 사용하던 입장에서, C++ 코드를 봤을때 가장 먼저 알 수 있던 차이점은

입출력시 printf, scanf 대신 cin, cout을 사용하는 것이었습니다.

 

이와같이 C++에서 지원하는 입출력에 대해 알아보겠습니다.


cout

 

C언어에서는 출력을 위해 printf를 사용했지만, C++에서는 더 쉬운 출력 함수인 cout이 지원됩니다.

C에서 printf()를 사용하기 위해 <stdio.h>를 include 했던 것처럼, C++에서 cout을 사용하기 위해서는 <iostream>이라는 헤더파일을 include 해야 합니다.

#include <iostream>
using namespace std;

int main(void){
 cout<<"Hello world!";
 return 0;
}

코드를 살펴보면, printf와의 차이가 보이는데,

cout에서는 출력하려는 값의 서식지정자를 적지 않습니다! cout은 자동으로 자료형을 검사하여 적절한 값을 출력해주기 때문입니다.

 

물론 단점도 있습니다. cout은 printf에 비해 처리 속도가 느립니다. 따라서, 시간이 중요시되는 코딩테스트에서는 주의해야 합니다.

 

cout의 특징을 정리하면 다음과 같습니다.

 

  • 문자열, 수, 문자 등 다양한 데이터형을 서식지정자가 없어도 자동으로 출력해 준다.
  • printf에 비해 처리 속도가 느리다
  • << 표시는 명령문이 그 문자열을 cout에 전달한다는 것을 뜻하며 <<가 나타내는 방향이 정보의 흐름을 상징한다.

 

+ cout은 "씨 아웃"이라고 발음합니다.

 


cin

#include <iostream>
using namespace std;

int main(void) {
	int input;
	cin >> input;
	cout << "input value = " << input;
	return 0;
}

 

cout과 같이 C++에서는 cin으로 scanf()를 대신할 수 있습니다.

cout과 동일하게, 서식지정자 없이도 사용가능하고, scanf보다 느리다는 단점이 있습니다.

주의할 점은, cout과는 기호의 방향이 반대입니다!

 

cout의 특징은 공백이나 개행 입력 이전까지의 값만 결과로 가져온다는 것입니다.

 

 

cin과 cout의 느린 속도를 개선하기 위한 방법은 아래 게시글을 참고해 보세요.

https://sirius7.tistory.com/79

 

[C++] 백준 15552번 - 빠른 A+B

https://www.acmicpc.net/problem/15552 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmic

sirius7.tistory.com


endl 

#include <iostream>
using namespace std;

int main(void) {
	int input1, input2;
	cin >> input1;
	cin >> input2;
	cout << "input value1 = " << input1 << endl;
	cout << "input value2 = " << input2 << endl;
	return 0;
}

위의 코드에서는 줄바꿈을 위해 \n 대신에 endl을 사용하고 있습니다.

endl은 \n과 같이 줄바꿈 기능과, 버퍼를 비워주는 기능을 가지고 있습니다.

 

이 버퍼를 비워주는 기능이 \n과의 가장 큰 차이로, 버퍼를 비우지 않는 \n이 더 빠르다는 차이가 있습니다.