C++ 스트림(Stream)이란?
C++에서 스트림(stream)은 프로그램과 입출력(I/O) 장치 사이에서 전달되는 문자(character)의 흐름을 의미합니다. 키보드로 데이터를 입력하거나 화면에 결과를 출력할 때, 데이터는 이러한 스트림을 통해 순차적으로 이동합니다.
스트림 클래스는 파일이나 입출력 장치에 대해 입력·출력 작업을 수행하기 위해 사용되는 클래스입니다. 각 클래스는 고유한 기능을 가지고 있으며, 프로그램의 입력과 출력을 체계적으로 처리하는 역할을 담당합니다.
C++에서 모든 스트림 클래스는 iostream 헤더 파일에 정의되어 있습니다.
그럼 스트림 클래스들의 계층 구조를 살펴보고, 각 클래스가 어떤 역할을 하는지 자세히 알아보겠습니다.

주요 스트림 클래스의 종류와 특징
1. ios 클래스
ios 클래스는 모든 스트림 클래스의 기반(base) 클래스입니다. 스트림은 입력 스트림일 수도 있고 출력 스트림일 수도 있는데, ios 클래스는 클래스 템플릿이 어떻게 정의되었는지와 무관하게 공통으로 사용되는 멤버들을 정의합니다. 즉, 스트림 상태 확인이나 서식 지정처럼 입출력 전반에 필요한 공통 기능을 제공합니다.
2. istream 클래스
istream 클래스는 C++에서 입력 스트림을 담당합니다. 이 클래스의 객체는 입력된 데이터를 문자 시퀀스(sequence of characters)로 읽어 들여 해석하는 역할을 합니다. 대표적인 예로 cin 객체가 있으며, 키보드 등 표준 입력 장치로부터 데이터를 받아올 때 사용됩니다.
3. ostream 클래스
ostream 클래스는 C++에서 출력 스트림을 담당합니다. 이 클래스의 객체는 데이터를 문자 시퀀스 형태로 화면에 출력하는 역할을 합니다. 대표적으로 cout 객체와 puts() 함수가 있으며, 표준 출력 장치로 데이터를 내보낼 때 사용됩니다.
스트림 클래스 사용 예제
출력 스트림(ostream)
cout 사용 예제
#include <iostream>
using namespace std;
int main(){
cout << "This output is printed on screen";
}
실행 결과
This output is printed on screen
puts() 사용 예제
#include <iostream>
using namespace std;
int main(){
puts("This output is printed using puts");
}
실행 결과
This output is printed using puts
입력 스트림(istream)
cin 사용 예제
#include <iostream>
using namespace std;
int main(){
int no;
cout << "Enter a number ";
cin >> no;
cout << "Number entered using cin is " << no;
}
실행 결과
Enter a number 3453
Number entered using cin is 3453
gets() 사용 예제
#include <iostream>
using namespace std;
int main(){
char ch[10];
puts("Enter a character array");
gets(ch);
puts("The character array entered using gets is : ");
puts(ch);
}
실행 결과
Enter a character array
thdgf
The character array entered using gets is :
thdgf