C++/C++ 기초

[C++] 표준 입출력 클래스 ( iostream )

Song 컴퓨터공학 2023. 5. 4. 01:40

사용자와 프로그램이 대화하기 위해서는 둘 사이의 입출력을 담당하는 수단이 필요합니다.

 

C++의 모든 것은 객체로 표현되기 때문에 입출력을 담당하는 수단 또한 C 의 함수와는 달리 모두 객체입니다.

C에서는 기본적인 입출력을 include <stdio.h> , Standard Inout Output 헤더 파일을 사용하죠.

 

C++ 에서도 iostream 헤더 파일에 표준 입출력 클래스를 정의하고 있습니다. C 언어의 printf() 함수나 scanf() 함수 같은 기능을 C++ 에서는 cout, cin 객체를 사용해서 나타냅니다. 추가적으로 C++ 에서는 기존의 C언어처럼 printf() 함수나 scanf() 함수로도 입출력 작업을 수행할 수 있습니다.

 


 

cout 객체

 

cout 객체는 다양한 데이터를 출력하는 데 사용되는 C++ 에서 미리 정의된 출력 스트림을 나타내는 객체입니다.

 

cout 객체 사용 문법은 다음과 같습니다.

std::cout << 출력데이터;

 

C언어에서의 왼쪽 시프트 연산자와 동일한 << 를 사용합니다. 이것은 C++의 연산자 오버로딩을 활용한 것으로 추후 오버로딩에 대해 다룰 때 제대로 알아보겠습니다.

 

cin 객체

 

cin 객체는 반대로 데이터를 입력받는 데 사용되는 C++에서 미리 정의한 입력 스트림을 나타내는 객체입니다.

 

cin 객체 사용 문법은 다음과 같습니다.

std::cin >> 저장할변수;

추출 연산자를 통해 사용자가 입력한 데이터를 입력 스트림에서 추출하여 오른쪽의 변수에 저장합니다.

이때 cin 객체는 자동으로 사용자가 입력한 데이터를 오른쪽에 위치한 변수의 타입과 동일하게 변환시켜 저장합니다.

 

 

위 2개의 예제를 확인해보겠습니다.

 

#include <iostream>
using namespace std; // std라는 name space에 속한 정의들은 이름 안붙이고 사용 가능


int main()
{
	int num;

	cout << "출력하고 싶은 숫자를 입력해주세요 : ";
	cin >> num;

	cout << "입력한 숫자는 "<< num << " 입니다." << endl;
	return 0;
}

 

설명 안한 것이 하나 있는데, namespace 입니다. 위처럼 using namespace std; 를 선언해주지 않으면 위에 설명한 문법대로 std::cin, std::cout 으로 일일히 전부 적어줘야 합니다. std 라는 name space 에 속한 정의들 앞에 std:: 를 붙이지 않으려면 위처럼 using namespace std; 라는 문법을 사용해주면 됩니다.

 

위 코드는 입력한 데이터를 자동으로 정수를 저장하는 int 형으로 변환되서 저장됩니다. 만약 이 때 문자열을 입력으로 넣는다면 cin 객체는 변수 num에 숫자가 아니라는 의미인 0을 전달합니다.

 


오늘 배운 cin 과 cout 은 C언어에서의 printf() 와 scanf() 와 매우 유사합니다. 그러나 좀 더 직관적이고 다른 점이 있죠.

 

1. 삽입 연산자(<<) 와  추출 연산자(>>) 가 데이터의 흐름을 나타낸다.

2. C++ 표준 입출력 객체는 입출력 데이터의 타입을 자동으로 변환시켜준다.

 

 

모든 언어를 배울 때 가장 먼저 배우는 게 입출력입니다. 오늘은 C++에서의 입출력 방법에 대해 알아보았습니다. 감사합니다.