사용자와 프로그램이 대화하기 위해서는 둘 사이의 입출력을 담당하는 수단이 필요합니다.
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++에서의 입출력 방법에 대해 알아보았습니다. 감사합니다.
'C++ > C++ 기초' 카테고리의 다른 글
[C++] String 클래스 / 메소드 (0) | 2023.05.04 |
---|---|
[C++] 메모리의 동적할당 ( Dynamic allocation ) (0) | 2023.05.04 |
[C++] 배열, 구조체, 포인터 [Array, Structure, Pointer] (0) | 2023.05.04 |
[C++] 연산자 총 정리 (Operator) (0) | 2023.05.04 |
[C++] 리터럴 상수와 심볼릭 상수 ( literal constant and symbolic constant ) (0) | 2023.05.04 |