Nagie's DevStory
[CPP] 41. 파일 입출력 (File I/O) [ 3 ] 본문
728x90
C의 파일 입출력처럼 C++ 역시 파일 모드란게 존재하며
표준 C++에서 지원하는 파일 모드는 아래의 표와 같다.
파일 모드 | 설명 |
std::ios::in | 파일을 읽기 위해 사용되며 파일을 읽을 수 있지만 쓸 수는 없다. |
std::ios::out | 파일을 쓰기 위해 사용되며 파일을 쓸 수 있지만 읽을 수는 없다. |
std::ios::app | 파일 끝에 데이터를 추가하기 위해 사용된다. 기존 파일의 끝에 데이터를 추가할 수 있다. |
std::ios::binary | 이진 파일 모드로 사용된다. 파일을 이진 모드로 열 때 사용되며 파일의 데이터를 이진 파일로 처리한다. |
std::ios::ate | 파일을 열 때 파일 끝에 커서를 위치시키는 데 사용된다 파일을 열면 파일 끝에서 시작하며 파일을 읽고 쓸 수 있다. |
std::ios::trunc | 파일을 열 때 파일이 이미 존재하면 해당 파일의 내용을 삭제하고 새로운 파일로 열기 위해 사용된다. 이 모드를 사용하면 파일을 덮어쓴다. |
각 모드는 '|'를 사용해 결합이 가능하며 다음과 같이 사용이 가능하다.
#include <fstream>
#include <iostream>
int main() {
std::fstream file("example.bin", std::ios::in | std::ios::out | std::ios::binary);
if (file.is_open()) {
// 파일에서 데이터 읽기
int data;
file.read(reinterpret_cast<char*>(&data), sizeof(data));
std::cout << "읽은 데이터: " << data << std::endl;
// 파일에서 데이터 쓰기
data *= 2;
file.seekg(0, std::ios::beg); // 파일 위치를 처음으로 이동
file.write(reinterpret_cast<char*>(&data), sizeof(data));
file.close();
} else {
std::cerr << "파일을 열 수 없습니다." << std::endl;
}
}
728x90
Comments