It won't hurt to try

[C++/윈도우프로그래밍응용]21. 파일 입출력 본문

C++/윈도우프로그래밍응용

[C++/윈도우프로그래밍응용]21. 파일 입출력

yongki.doki 2021. 10. 26. 08:27

스트림(Stream)

입력과 출력을 바이트(byte)의 흐름으로 생각하는 것

출력 스트림

  • : 프로그램에서 외부로 흘러나가는 연속된 바이트
  • 예) 모니터, 프린터 등으로의 출력

입력 스트림

  • : 외부에서 프로그램으로 플러들어오는 연속된 바이트
  • 예) 키보드, 마우스 등으로부터의 입력

스트림의 장점

스트림의 최대 장점은 장치 독립성

  • 입출력 장치에 상관없이 프로그램 작성 가능

클래스를 통한 추상적 구현 가능

  • 구체적인 장치의 주소나 형태를 지정할 필요 없이
    스트림 클래스를 통하여 추상적인 구현이 가능

입출력 관련 클래스

클래스 설명
ofstream 출력 파일 스트림 클래스
ifstream 입력 파일 스트림 클래스
fstream 일반적인 파일 스트림을 나타내는 클래스

파일 쓰기

ofstream os("numbers.txt")

if(!os) {
  cerr << "파일 오픈 실패" << endl;
  exit(1);
}

for(int i=1; i<=10; i++)
  os << i << " ";

파일 읽기

ifstream is("numbers.txt")

if(!is) {
  cerr << "파일 오픈 실패" << endl;
  exit(1);
}

int number;
// is읽기에서 실패한 경우 false
while (is >> number) {
  cout << number << " ";
}

파일 모드

파일 모드를 이용한 다양한 파일 읽기/쓰기 지정

// 읽기전용 모드
ifstream is("numbers.txt", ios::in);

// 출력 모드, 이진 모드로 출력
ofstream os("data.bin", ios::out | ios::binary)

ifstream의 파일 모드

파일 모드 설명
ios::in 입력을 위한 파일 열기 모드
ios::out 출력을 위한 파일 열기 모드
ios::binary 이진 파일 입출력을 위한 파일 열기 모드
ios::ate 파일의 끝을 초기 위치로 지정(at end)
ios::append 파일의 끝에 추가(append)
ios::trunc 새로운 내용으로 교체(truncate)
ios::app 파일에 누적해서 내용을 추가할 때 사용함

파일 닫기

is.close();

remove() 함수

C언어에서 제공하는 remove() 함수로 파일 삭제 가능

#include <cstdio>
const string filename = "numbers.txt";

remove(filename.c_str());

 

300x250
300x250
Comments