C++ 그리고 표준입출력(cout, cin)

hyomkim·2021년 2월 17일
0

C++

목록 보기
1/2

우리가 키보드를 통해 입력하는 것을 표준 입력 이라고하고
보고있는 모니터에서 볼 수 있도록 터미널등에서 데이터를 출력하는 것을 표준 출력이라고 합니다.

C++역시 표준입출력을 지원합니다.
하지만 우리가 C에서 사용하던 방식과 조금 다른모습을 하고 있습니다.

iostream

c에선 printf함수나 scanf함수를 사용하기위해 상단에 stdio.h헤더파일을 include해줍니다.

c++에서도 이 stdio.h와 비슷한 역할을 하는 헤더파일이 있는데 바로 iostream입니다.

c++에서는 사용자 정의 헤더를 제외한 표준 헤더 파일들 모두 '.h'를 사용하지 않습니다.
(iostream 과 iostream.h은 서로 다른 헤더파일 입니다.)

컴파일의 버전이 구버전일 경우 iostream.h헤더파일을 사용하기도 합니다.

cin

C++에서 iostream헤더 안에 있는 표준 입력기능을 하는 객체입니다.

형태

std::cin >> 변수명;	//	'std::'는 네임스페이스 입니다.
			//	'변수명'에는 입력한 값을 저장할 변수의 이름을 넣어주면 됩니다.

함수사용 예시

#include <iostream>

int	main(void){
	int	a;

    	std::cin >> a;
    	return (0);
}

cout

C++에서 표준 출력을 담당하는 객체입니다.

형태

std::cout << 출력내용(혹은 변수이름) << std::endl
// '<<'의 방향에 주의합시다!! cin과 반대방향입니다.
//'std::endl'은 iostream에 포함되어있는 객체로 개행기능과 출력 스트림을 모두 내보내는 역할을 해줍니다.	

함수사용 예시

#include <iostream>

int	main(void){
	char	*s = "Human";
	int		a = 30;

	std::cout << "Hi! I'm " << s << " and I'm " << a << " years old!" << std::endl;
//	Hi! I'm Human and I'm 30 years old!
//	위와 같은 printf에서는 불가능한 방식의 출력이 가능합니다.(퍼즐맞추기 하듯 이어서 출력)
	return (0);
}

C와 C++의 표준 입출력의 차이점

C와 C++에서 표준입출력방식의 가장 큰 차이점은 사용자가 저장하는 변수의 데이터형식을 신경 써야 하는지 여부입니다.

printf와 scanf모두 변수와 함께 사용하기 위해선 변수의 자료형을 사용자가 알고있어야 합니다.
반면 cin과 cout은 사용자가 같이 사용하려는 변수의 자료형을 알지 못한다 하더라도 사용할 수 있습니다.

아래의 예시를 통해 차이점을 확인해 볼 수 있습니다.

  1. 표준 입력

다음의 변수에 표준 입력값을 저장할 때,

int	a;

C

scanf("%d", &a);	//	변수 a의 주소 안에 정수데이터를 저장합니다. (사용자가 int형 변수임을 알고 있어야 합니다.)

C++

std::cin << a;	//	변수의 자료형을 알고있을 필요가 없습니다.
  1. 표준 출력

다음의 변수를 출력할 때

char	*s = "가나다";

C

printf("%s\n", s);	//	변수 s의 서식을 문자열형식으로 합니다.(사용자가 변수 s안에 문자열이 저장되어 있음을 알고 있어야합니다.)

C++

std::cout << s << std::endl; // 사용자가 변수 s의 자료형을 알고있지 않아도 됩니다.

왜 이렇게 바뀌었을까요?

C++의 입출력 방식은 사용자의 실수를 방지해줍니다.

기존 C에서 출력이나 입력을 위해선 반드시 사용자가 사용하려는 변수의 자료형을 알고있어야 한다 고 했습니다.
사람이 실수를 하지 않는다면 문제가 없겠지만, 사람은 실수를 할 가능성이 존재하므로 C의 방식은 사람의 실수로인한 문제 발생 가능성을 비교적 더 많이 가지고 있다고 볼 수 있습니다.

반면 C++의 방식은 컴파일러가 가장 알맞은 자료형을 선택해서 적용해줍니다.
(물론 사용자가 직접 선택해 줄 수도 있습니다.)
따라서 사용자로인한 문제의 발생 가능성이 C에비해 비교적 낮습니다.

Reference :
이것이 C++이다(최성호 지음)

profile
C++을 좋아하는 조금 모자란 사람이랍니다!

0개의 댓글