[디딤돌 C++] 3. 입출력 개요 (cin, cout)

여기에서는 앞으로 C++ 문법 학습하기 위해 필수적으로 사용할 입출력에 관한 사항을 간략하게 살펴보기로 할게요.

C언어에서는 stdio.h 파일을 포함하여 표준 입출력 함수들을 사용했었죠. C++에서도 C언어에서 제공하는 함수들을 사용할 수 있어요. 하지만 C++언어에서 콘솔 화면에 출력하거나 키보드에서 입력받을 때 printf 함수나 scanf 함수를 사용하는 이들은 거의 없어요.

C++ 언어에서는 iostream 파일을 포함하여 cout과 cin 개체를 사용할 수 있어요.

iostream은 STL(Standard Template Library,표준 템플릿 라이브러리)에서 제공하는 클래스이며 cout과 cin은 미리 선언한 전역 변수예요. 아직 클래스를 배우진 않았지만 학습을 위해 간단한 사용 방법을 소개할게요.

먼저 cout과 cin을 사용하려면 다음처럼 iostream 포함문과 using문을 사용합니다.

#include <iostream>
using namespace std; //std 네임 스페이스를 사용

STL에서 제공하는 대부분의 헤더 파일은 .h 확장자를 포함하고 있지 않아요.

iostream은 입출력 스트림을 뜻하며 스트림은 문자의 연속적인 흐름을 의미해요. 프로세스의 데이터를 다른 장치에 쓰거나 읽어올 때 사용하는 클래스를 정의하고 있어요. 여기에서는 단순하게 키보드로 입력받고 콘솔 화면에 출력하는 방법만 소개할 거예요.

그리고 STL에서 제공하는 것들을 사용하기 위해서는 std 이름 공간(name space, 앞으로 영어 발음 그대로 네임 스페이스라고 부를게요.)을 사용하겠다는 using 문을 작성합니다. 참고로 using 문은 별도로 다룰 거예요.

cout은 데이터를 콘솔 화면에 출력할 때 사용해요. C언어에서 printf 함수는 출력할 데이터의 종류에 따라 출력 포멧 문자열을 지정하여 표현했지만 cout은 << 연산 뒤에 피 연산자를 표현하면 알아서 출력해 줘요.

void TestCout()
{
    int num = 23;
    const char *name = "홍길동";
    cout<<"이름:"<<name<<" 번호:"<<num<<endl;
}

▷ 실행 결과

이름:홍길동 번호:23

참고로 endl은 개행 문자를 의미해요.

cin은 키보드로 입력한 데이터를 프로그램 변수로 입력받을 때 사용해요. cout과 마찬가지로 입력 포멧 문자열을 지정할 필요없이 >> 연산 뒤에 변수를 표현하면 알아서 입력받습니다. 특히 변수의 주소 연산을 사용할 필요가 없어요.

void TestCin()
{
    int num;
    char name[256];

    cout<<"번호:";
    cin>>num;
    cout<<"이름:";
    cin>>name;

    cout<<"입력한 번호는 "<<num<<" 이름은 "<<name<<"입니다."<<endl;
}

▷ 실행 결과

번호: 45

이름: 강감찬

입력한 번호는 45 이름은 강감찬입니다.

이 외에도 iostream에는 다양한 멤버를 제공하지만 여기까지 소개할게요.

//입출력 개요
//Program.cpp

#include <iostream>
using namespace std; //std 네임 스페이스를 사용

void TestCout();
void TestCin();
int main()
{
    TestCout();
    TestCin();
    return 0;
}
void TestCout()
{
    int num = 23;
    const char *name = "홍길동";
    cout<<"이름:"<<name<<" 번호:"<<num<<endl;
}
void TestCin()
{
    int num;
    char name[256];

    cout<<"번호:";
    cin>>num;
    cout<<"이름:";
    cin>>name;

    cout<<"입력한 번호는 "<<num<<" 이름은 "<<name<<"입니다."<<endl;
}

▷ 실행 결과

이름:홍길동 번호:23
번호: 45
이름: 강감찬
입력한 번호는 45 이름은 강감찬입니다.