본문 바로가기

진리는어디에/C++

[C++] 표준 입출력 완벽 가이드

들어가며

이번 포스트는 C++ 기초 강좌로써 표준 입출력에 대해 살펴 보도록 하겠다. 이번 포스트는 어떻게? 왜? 라는 이해 보다는 그냥 이런것이 있구나라는 받아들이는 마음으로 가볍게 읽으면 된다.

표준 입출력?

표준 입출력은 우리가 C++ 프로그램을 만들고 실행 시켰을 때 새까만 콘솔창에 텍스트를 출력하거나 입력하는 것을 의미한다. C++에서 표준 입출력을 사용하기 위해서는 iostream, cout, cin. 이렇게 세 가지 대해 알아야 한다. 아래의 예제 코드를 살펴 보면서 이 세 가지 키워드에 대해 익숙해져 보도록 하겠다.

  • C++ 표준 입출력 예제 코드
#include <iostream>

int main()
{
    int age = 0;
    
    std::cout << "Input your age : " << std::endl;
    std::cin >> age;
    std::cout << "Your age is "<< age << std::endl;
    
    return 0;
}
"#include <iostream>, std::cout, std::cin" 이 세 가지만 기억하자.

iostream

iostream은 표준 입출력 라이브러리를 담고 있는 헤더 파일이다. 표준 입출력에 대한 모든 내용이 위 헤더파일 안에 모여 있으므로 표준 입출력을 사용하기 위해서는 필수적으로 iostream 헤더가 포함(include)되어야 한다.

#include <iostream>

std::cout

표준 출력을 사용하기 위해서는 std::cout 을 사용한다. 혹시 이전에 C를 사용해본 경험이 있다면 printf와 scanf 함수를 이용해 %d 와 같은 서식 문자열을 지정해야 했지만 C++의 cout은 서식 문자열을 지정할 필요가 없다.

  • 참고용 C 표준 입출력 예제 코드
#include <stdio.h>

int main()
{
    int age = 0;
    printf("Input your age : ");
    scanf("%d", &age); // %d라는 서식 문자열 필요
    printf("Your age is %d\n", age);
    
    return 0;
}

위 예제는 C의 서식 문자열이 무엇인지 보여주고 있다. C++예제와 동일한 결과를 출력하지만 그 방식은 다소 다르다.

C++ 경우는 cout 뒤에 << 연산자를 이용해 변수를 추가해 주기만하면 알아서 타입별로 적절한 출력을 해준다. 그리고 << 연산자는 한번만 쓸 수 있는 것이 아니라 아래 같이 여러번 반복해서 사용도 가능하다.

std::cout << "Your age is "<< age;

만일 개행(줄바꿈)이 필요하다면 std::endl을 사용한다.

std::cout << "Your age is "<< age << std::endl;

std::cin

표준 출력을 하는 방법은 위와 같고, 입력의 경우에는 cin을 사용한다. 출력 할 때는 << 연산자를 사용했다면 입력을 받을 때는 그 반대인 >> 연산자를 사용한다. 그리고 C와는 달리 주소 연산자(&)가 필요 없고 단순히 변수만을 적어 주면 된다.(C와의 차이를 설명하기 위해 주소 연산자라는 이야기를 했지만 지금은 모른다고해서 전혀 문제 될것이 없다. 일단 넘어가도록 하자)

int age = 0;
...    
std::cin >> age;

표준 입출력을 사용하는 세가지 방법

  • Fully qualified name
#include <iostream>

...

std::cout << "hello world" << std::endl;

iostream을 포함한 다음에 네임스페이스까지 지정해서 전체 코드를 적는 방법이다.

개인적으로는 위 방법을 가장 선호하긴 하지만 매번 동일한 std라는 코드를 적는게 귀찮을수 있다. 그래서 using 키워드를 이용해 std::cout과 std::endl을 미리 선언해놓고 사용하는 방법도 있다

  • using declaration(using 선언)
#include <iostream>

using std::cout;
using std::endl;

cout << "hello world" << endl;

위 방법은 cout과 endl에 대해서만 std라는 네임스페이스를 빼고 쓰겠다는 방법이다. 마지막으로 using namespace 키워드를 이용해 iostream 전체 내용을 미리 선언하고 사용하는 방법이 있다.

  • using directive(using 지시자)
#include <iostream>

using namespace std;

cout << "hello world" << endl;

전체 네임스페이스를 모두 포함하고 사용하는 방법이다. 위 방법을 사용하면 std 네임스페이스 아래에 있는 모든 함수나 클래스들을 별도의 지시자 없이 사용할 수 있다.

마치며

이번 포스트의 핵심은 iostream, std::cout, std::cin, std::endl. 네가지 키워드를 기억하는 것이다. 자세한 사용법이나 원리는 차차로 익혀나가면 되는거고 이번 포스트에서는 저 네가지가 있다는것만 기억하고 넘어가자.

부록 1. 같이 읽으면 좋은 글

유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!