일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- ADT
- 노트북SSD교체
- 브론즈
- 삼성노트북
- 몬스긱
- JavaScript
- 자료구조
- JS
- unityC#
- solved.ac
- 시간복잡도
- 코테준비
- 긱바
- 자바스크립트
- LinkedList
- 백준
- 코드잇
- GMK67
- 코테
- 삼성노트북하판
- 기계식키보드
- 코딩공부
- 오늘도코드잇
- 추상적 자료형
- 노트북램교체
- M1W
- Unity
- 코드잇TIL
- 스톡
- 어도비
- Today
- Total
SKYLIGHT STUDIO
[C++ 리바이브] Stream, Cout, Cin 본문
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 |