산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C++ 스트림 마스터: cout, cin, cerr, clog 실전 가이드

C++에서 스트림이란?

C++은 바이트 시퀀스로 데이터를 전송하는 스트림 클래스 패밀리를 통해 입출력을 추상화합니다. 이 스트림들은 언어에서 모든 I/O 연산의 중추입니다.

스트림은 두 범주로 나뉩니다:

스트림 타입

이 튜토리얼에서 다룰 내용:

스트림 작동 방식

C++ 스트림 연산의 일반적인 흐름:

  1. 적절한 타입의 스트림 객체 인스턴스화
  2. get/put 포인터를 사용하여 스트림을 장치나 파일과 연관
  3. 추출(>>) 또는 삽입(<<) 연산자로 I/O 수행

스트림 함수 개요

streambuf 헤더는 파일 버퍼를 관리하는 여러 클래스를 제공합니다:

클래스설명
filebuf읽기/쓰기용 파일 버퍼 관리. open()과 close() 제공
fstreambaseifstream, fstream, ofstream의 베이스 – 공통 파일 스트림 연산
ifstream데이터 읽기용 입력 파일 스트림
ofstream데이터 쓰기용 출력 파일 스트림
fstream결합 입출력 스트림

C++ I/O 헤더 파일

이 모든 객체는 iostream에 정의되어 있으며, 헤더 생략 시 컴파일 오류 발생.

std::cout

cout 객체는 표준 출력 스트림(보통 콘솔)에 씁니다. 삽입 연산자(<<)와 함께 사용.

예제

#include <iostream>
using namespace std;
int main() {
    char welcome[] = "Welcome to Guru99";
    cout << welcome << endl;
    return 0;
}

출력:

C++ 스트림 마스터: cout, cin, cerr, clog 실전 가이드

코드 분석:

  1. iostream 포함으로 cout 접근
  2. 접두사 방지를 위해 std 네임스페이스 사용
  3. 메시지를 담은 문자 배열 정의
  4. endl로 줄바꿈 삽입하며 메시지 출력
  5. 성공 표시로 0 반환

std::cin

cin 객체는 표준 입력 스트림(보통 키보드)에서 읽습니다. 추출 연산자(>>)와 쌍을 이룹니다.

예제

#include <iostream>
using namespace std;
int main() {
    int number;
    cout << "Enter a number:";
    cin >> number;
    cout << "\nYou entered: " << number;
    return 0;
}

출력:

C++ 스트림 마스터: cout, cin, cerr, clog 실전 가이드

코드 설명:

  1. cin과 cout용 iostream 포함
  2. std 네임스페이스 사용
  3. 정수 변수 선언
  4. 사용자 프롬프트
  5. >>로 입력 읽기
  6. 입력된 값 에코
  7. 성공 시 0 반환

std::cerr

cerr 스트림은 비버퍼링되어 에러 메시지를 즉시 출력합니다. 즉시 표시되어야 하는 치명적 에러에 사용하세요.

예제

#include <iostream>
using namespace std;
int main() {
    cerr << "An Error occurred!";
    return 0;
}

출력:

C++ 스트림 마스터: cout, cin, cerr, clog 실전 가이드

설명:

  1. cerr용 iostream 포함
  2. std 네임스페이스 사용
  3. 에러 메시지 즉시 출력
  4. 0 반환

std::clog

cerr와 달리 clog는 버퍼링되어 버퍼가 플러시될 때까지 메시지를 저장합니다. 지연 가능한 로깅에 유용합니다.

예제

#include <iostream>
using namespace std;
int main() {
    clog << "An Error occurred!";
    return 0;
}

출력:

C++ 스트림 마스터: cout, cin, cerr, clog 실전 가이드

설명:

  1. clog용 iostream 포함
  2. std 네임스페이스 사용
  3. 버퍼링된 에러 메시지 작성
  4. 0 반환

스트림 객체를 이용한 에러 처리

스트림은 불리언 문맥에서 평가되어 유효성 확인 가능. 또한 멤버 함수로 세밀한 상태 확인 제공:

파일 열기 검증 예제:

ifstream file("myfile.txt");
if (!file) {
    cout << "File NOT opened!" << endl;
}

사용자 입력 검증 예제:

int p;
if (cin >> p) {
    cout << "Enter valid number" << endl;
}

요약

  • C++에서 I/O는 바이트 시퀀스를 전송하는 스트림을 통해 수행
  • 입력 스트림은 장치에서 메모리로, 출력 스트림은 메모리에서 장치로 데이터 이동
  • cin (istream)은 키보드 입력 읽기
  • cout (ostream)은 콘솔에 쓰기
  • cerr (ostream)은 즉시 에러 메시지 표시
  • clog (ostream)은 에러 출력을 버퍼링하여 나중에 플러시
  • 버퍼링된 스트림은 good(), bad(), fail(), eof()로 확인 가능

C 언어

  1. C# 기초: 입출력(Essential Input/Output) 완벽 가이드
  2. C++ 입출력 마스터하기: cin, cout 실전 가이드
  3. C 입출력(I/O) 마스터: scanf()와 printf() 완전 정복
  4. Java 입출력 마스터: 출력, 입력, 포맷팅 완벽 가이드
  5. C++ switch-case 마스터하기: 문법, 활용법, 실전 예제
  6. C++ 예외 처리 마스터: try, catch, throw 실전 예제
  7. C++ 동적 배열 할당 완벽 가이드: new, delete, 실전 코드 예제
  8. C++ 구조체(struct) 완벽 가이드: 선언, 인스턴스, 포인터, 함수 인자 전달
  9. D 래치 마스터하기: 설계, 동작, 주요 차이점
  10. C 입출력(I/O) 마스터: 표준 스트림, 문자/행/포맷 입출력 함수 총정리