더북(TheBook)

FileStorage 클래스를 이용하여 파일에 여러 개의 데이터를 저장할 때에는 데이터의 구분을 위한 문자열 형식의 이름을 함께 저장합니다. 즉, FileStorage 객체에 데이터 이름을 먼저 저장한 후, 실제 저장할 데이터를 저장합니다. 예를 들어 C/C++의 int형 데이터 2019를 “year”라는 이름으로 저장하려면 다음과 같이 코드를 작성합니다. 다음 코드에서 변수 fs는 쓰기 모드로 생성된 FileStorage 객체입니다.

int year = 2019;
fs << "year";
fs << year;

그런데 FileStorage 클래스와 함께 사용하는 << 연산자 재정의 함수는 사용된 FileStorage 객체를 참조 형태로 반환합니다. 그러므로 앞에서 데이터의 이름과 값을 저장하기 위해 두 줄로 작성한 코드는 다음과 같이 한 줄의 코드로 바꿔 쓸 수 있습니다.

int year = 2019;
fs << "year" << year;

FileStorage 클래스를 이용하여 여러 형식의 데이터를 파일에 저장하는 예제 코드를 코드 4-14에 나타냈습니다. 코드 4-14의 writeData() 함수는 FileStorage 클래스를 이용하여 C/C++ 기본 자료형, STL 벡터, OpenCV 자료형 등을 JSON 파일 형식으로 저장합니다. writeData() 함수가 정의된 소스 파일은 내려받은 예제 파일 중 ch04/storage 프로젝트에서 확인할 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.