SKYLIGHT STUDIO

[C++ 리바이브] Stream, Cout, Cin 본문

Computer Programming/Coding Test(C++)

[C++ 리바이브] Stream, Cout, Cin

SKY_L 2024. 9. 26. 08:21

세계는 러시아 혁명이 막바지에 이르었다고 생각한다. 착각하지 마라. 러시아 혁명은 이제 막 시작되었다 - 알렉산드르 케렌스키, 1917년 러시아 혁명 당시

 

C++이 하나도 기억이 나지 않는다.

언리얼은 대체 어떻게 했지?

우선 짚고 넘어가야 하는 개념이 있다


 

Stream

말 그대로 '흐름'이다. 데이터를 읽고 쓰는 일종의 '흐름'을 설명하기 쉽게 추상화한 것이라고 보면 된다. C++에서만 사용되는 개념은 아니고 여러 언어에서도 사용하는 개념.

 

앞서 언급했듯이 스트림을 데이터를 특정 디바이스로로부터 입력(Input)하거나, 특정 디바이스로 출력(Output)하는 흐름을 제공하는데, 따라서 2개의 스트림이 있다고 볼 수 있다.

 

입력 스트림은 데이터를 외부에서 가져오는 통로. 키보드로 사용자가 값을 입력해서 그 값을 받아오게 된다면 그건 입력 스트림을 사용한다고 볼 수 있다.

출력 스트림은 데이터를 외부로 사출하는 통로. 길게 볼 것 없이 콘솔창에 띄우거나 하면 출력 스트림이다.

 

 

중요한 것은, 스트림이라는 추상화된 개념은 데이터를 순차적으로 처리하는 데에 최적화되어있다는 것이다. 즉 데이터가 단방향으로 흘러간다는 것!

 


 

객체(Object)

 

사실 대학 수업에서 질리도록 들었을 개념. C++에서 데이터를 구조화하고, 그 데이터에 대한 동작--즉 함수까지 포괄할 수 있는 단위. 객체 지향 프로그래밍에서의 기본 단위다.

 


 

cout

 

#include <iostream>

int main()
{
    std::cout << "Skylight STUDIO";
    return 0;
}

 

 

출력값을 보는 함수라고 생각하자.

 

별로 의미는 없겠지만... 각각 풀어서 설명하자면

 

std는 Standard, 그러니까 표준 라이브러리의 네임스페이스(네임스페이스 개념은 차후에 설명). C++에서 표준 라이브러리의 모든 기능은 std라는 네이밍을 가진 네임스페이스 안에 정의되어 있다고 이해하면 된다.

 

cout는 Character Out. 즉 데이터를 출력하는 객체.

앞서 언급한 객체 개념과 결부해 설명해보자면, std::cout가 출력 스트림을 관장하는 객체이며, 이 객체는 단순한 데이터 컨테이너가 아니라 데이터를 처리하는 여러 함수들까지 포함하고 있는 것이다.

 

<<는 스트림 삽입 연산자.

좌측에 있는 std::cout 객체에 스트링을 집어넣는다고 이해하면 될 것이다.

 


 

cin

 

앞서 cout이 출력 스트림을 관장하는 객체였다면, cin은 입력 스트림을 관장하는 객체라고 봐도 된다. 즉 사용자(디바이스)에게 입력을 받는다는 것.

 

#include <iostream>

int main()
{
    int A = 0;
    int B = 0;

    std::cout << "A + B?" << std::endl;
    std::cin >> A >> B;
    std::cout << std::endl << "A + B = " << A + B;

    return 0;
}

 

 

std::endl은 줄내림을 수행하는 객체라고 생각하자.

앞서 언급한 std::cout과 비슷하지만, 입력 스트림이라 스트림 삽입 연산자의 방향은 >>로 반대가 된다. A와 B에 데이터를 삽입하는 것이니까 말이다.

'Computer Programming > Coding Test(C++)' 카테고리의 다른 글

[C++/1076] 저항  (0) 2024.10.08
[C++][2547] 사탕 선생 고창영  (1) 2024.10.02
[C++ 리바이브] C++ 동적 배열  (0) 2024.10.02
[C++][1267] 핸드폰 요금  (0) 2024.10.01
[C++][1264] 모음의 개수  (0) 2024.09.29