ostream : seekp(seek put) //쓰기용 포인터 탐색
ex)
fileObject.seekg(n); //fileObject의 n바이트로 이동(디폴트ios::beg)
fileObject.seekg(n, ios::cur); //fileObject의 현재 위치에서 n바이트 앞으로 이동
fileObject.seekg(n, ios::end); //fileObject의 끝에서 뒤로 n바이트로 이동
fileObject.seek(0, ios::end); //fileObject의 끝으로 이동
임의 접근 파일 생성
class ClientData{
......
};
......
#include<fstream>
using std::ofstream;
......
ofstream outCredit("credit.dat",ios::binary); //텍스트가 아닌 이진으로
ClientData blankClient; //빈 객체 생성
for(int i=0;i<100;i++) //100개의 비어있는 레코드 기록
outCreadit.write(reinterpret_cast<const char*>(&blankClient),sizeof (ClientData));
//ClientData*를 const char*로 바꾸기 위해 reinterpret_cast 사용
임의 접근 파일에 임의로 데이터 쓰기
......
#include<fstream>
using std::ofstream;
......
ofstream outCredit("credit.data",ios::binary);
outCredit.seekp((client.getAccountNumber()-1)*sizeof(ClientData));
//사용자가 지정한 레코드의 파일 위치를 찾음
outCredit.write(reinterpret_cast<const char*>(&client),sizeof(ClientData));
//사용자가 입력한 정보를 파일에 기록 client객체에 쓸정보를 넣어두고
임의 접근 파일에서 순차적으로 데이터 읽기
......
#include<fstream>
using std::ifstream;
......
ifstream inCredit("credit.dat",ios::in);
......
inCredit.read(reinterpret_cast<char*>(&client),sizeof(ClientData));
//파일에서 처음 레코드를 읽음
while(inCredit && !inCredit.eof()) //파일의 끝까지 모든 레코드를 읽음
inCredit.read(reinterpret_cast<char*>(&client),sizeof(ClientData));
//다음 레코드를 읽음
fstream inOutCreadit("credit.dit",ios::in | ios::out); //읽고 쓰기위한 파일 열기
댓글을 달아 주세요