파일을 입출력할 때 파일의 데이터를 잠시 저장하기 위해 FILE 구조체를 사용한다.
우선 파일의 데이터를 저장하기 위한 파일 포인터를 만들고, fopen_s 함수로 파일을 열어 액세스를 준비한다.
FILE* pFile = NULL;
fopen_s(&pFile, strPath.c_str(), "rb");
fopen_s는 pFile에 strpath 경로의 파일을 "rb" 모드로 연다. "rb"는 파일 열기 모드 중 이진 파일을 읽기 전용(read binary)으로 연다는 뜻이다. 파일 열기에 성공했을시 0을 반환한다. fopen과의 차이점은 SDL검사를 지원하기 때문에 전처리기를 추가할 필요가 없다.
fread(&m_vecPixel[0], sizeof(PIXEL), m_vecPixel.size(), pFile);
pFile에 데이터를 저장했다면 fread로 m_vecPixel 벡터에 pFile로부터 데이터를 읽어 저장한다 . 두번째 인수는 저장할 데이터 요소 하나당 크기이고, 세번째 인수는 저장할 데이터 요소의 개수이다. 그래서 m_vecPixel[0]부터 sizeof(PIXEL)*m_vecPixel.size() 만큼의 데이터를 저장하면 [0]부터 차곡차곡 벡터에 데이터가 쌓이게 된다.
fwrite(&m_vecPixel[0], sizeof(PIXEL), m_vecPixel.size(), pFile);
파일을 출력할 때는 fwrite를 사용한다.프로젝트 파일이 있는 경로에 m_vecPixel 벡터에 저장된 데이터 파일로 생성한다.
fclose(pFile);
그리고 다 사용한 파일은 fclose함수로 닫아야 한다.
'C++' 카테고리의 다른 글
| [C++] shared_ptr (0) | 2022.02.18 |
|---|---|
| [C++] 스마트 포인터, unique_ptr (0) | 2022.02.18 |
| [C++] 가변 인자 템플릿 (variadic template) (0) | 2022.01.22 |
| [C++] vector, list, map에 할당한 메모리 해제 (0) | 2022.01.20 |
| [C++] 상속관계에서 복사 생성자 호출 (0) | 2022.01.18 |