C++ I/O 및 파일 조작 - 1. 개요 (Introduction)
2025. 3. 30. 00:16ㆍ프로그래밍 언어/C++
📘 1. 개요 (Introduction)
✅ C++에서의 입출력 개념
C++에서 입출력(Input/Output, I/O)이란, 프로그램과 외부 환경(예: 사용자, 파일, 네트워크 등) 간에 데이터를 주고받는 과정을 의미합니다.
- 입력(Input): 외부에서 프로그램으로 데이터를 전달하는 것 (예: 키보드 입력)
- 출력(Output): 프로그램의 처리 결과를 외부로 전달하는 것 (예: 화면 출력)
C++은 이러한 입출력 기능을 표준 라이브러리를 통해 제공합니다.
- <iostream>: 콘솔 입출력
- <fstream>: 파일 입출력
이를 통해 C++은 다양한 데이터 입출력 상황에서 유연하고 강력한 처리를 지원합니다.
✅ 스트림(Stream)의 개념
C++의 입출력은 스트림(stream)이라는 개념에 기반을 두고 설계되어 있습니다.
스트림이란 데이터를 순차적으로 읽거나 쓰는 데이터의 흐름을 추상화한 개념입니다.
- 입력 스트림: 외부에서 프로그램 내부로 데이터를 전달 (cin, ifstream 등)
- 출력 스트림: 프로그램에서 외부로 데이터를 전달 (cout, ofstream 등)
📌 스트림 버퍼(Buffer)
스트림은 내부적으로 스트림 버퍼(stream buffer)를 사용하여 데이터를 임시로 저장합니다.
이는 입출력의 성능을 향상시키기 위한 메커니즘으로, 데이터를 일정량 모은 후 한 번에 처리함으로써 I/O 작업 횟수를 줄입니다.
- cout은 출력 내용을 버퍼에 저장한 뒤, 버퍼가 가득 차거나 std::endl, std::flush 호출 시 실제 출력
- cin 역시 입력을 버퍼에서 먼저 처리한 뒤 프로그램으로 전달
이러한 구조는 C++ 입출력을 보다 효율적이고 일관성 있게 처리할 수 있게 해줍니다.
✅ 객체 지향적인 입출력 모델
C++의 입출력 시스템은 객체 지향(Object-Oriented)적으로 설계되어 있습니다.
입출력은 모두 클래스 기반의 객체를 통해 이루어지며, 다음과 같은 주요 클래스를 중심으로 구성됩니다.
클래스 | 용도 | 대표 객체 예시 |
istream | 입력 스트림 클래스 | cin, ifstream |
ostream | 출력 스트림 클래스 | cout, ofstream |
fstream | 입력 + 출력 | fstream |
- <<, >> 연산자는 각각 출력 및 입력 연산에 대해 연산자 오버로딩되어 있어, 객체와 직관적으로 입출력을 연결할 수 있습니다.
- 사용자 정의 타입도 <<, >> 연산자를 오버로딩하여 입출력 기능을 확장할 수 있습니다.
이러한 객체 지향적 설계는 재사용성과 확장성이 뛰어나며, 다양한 입출력 환경에 유연하게 대응할 수 있도록 돕습니다.
✅ 표준 입출력 vs 파일 입출력
구분 | 표준 입출력 (Standard I/O) | 파일 입출력 (File I/O) |
대상 | 콘솔 (키보드, 화면) | 파일 (텍스트, 바이너리 등) |
헤더 | <iostream> | <fstream> |
객체 | cin, cout, cerr, clog | ifstream, ofstream, fstream |
- 표준 입출력은 주로 사용자와의 실시간 상호작용(입력/출력)에 사용됩니다.
- 파일 입출력은 데이터를 저장하거나 불러오는 데 사용되며, 대량의 데이터를 처리할 때 특히 유용합니다.
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ I/O 및 파일 조작 - 3. 파일 입출력 기본 (Basic File I/O) (0) | 2025.03.30 |
---|---|
C++ I/O 및 파일 조작 - 2. 표준 입출력 (Standard Input/Output) (0) | 2025.03.30 |
C++의 링크 유형 (Linkage) - 10. 요약 및 결론 (0) | 2025.03.27 |
C++의 링크 유형 (Linkage) - 9. 링키지 관련 베스트 프랙티스 (0) | 2025.03.27 |
C++의 링크 유형 (Linkage) - 8. 실전 예제와 사례 분석 (0) | 2025.03.27 |