영넌 개발로그
[C++ File] text file VS binary file / file pointer 본문
text file은 열었을 때 사람 눈으로 읽을 수 있는 파일이다. ASCII 값으로 저장된다.
binary file은 열었을 때 사람 눈으로 읽기 어려운 파일이다. hexa(binary) value로 저장된다.
int main(){
ofstream of("binary.bin", ios::binary);
int i = 15;
//이렇게 쓰면 binary 파일이어도 아스키값으로 쓰임
//of << i;
of.write((char*)&i, sizeof(int));
ifstream input_f("bdata.bin", ios::binary);
int k;
input_f.read((char*)&k, sizeof(int));
cout << "red from file: " << k << endl;
return 0;
}
File Pointer
파일을 읽고 있는 위치를 가리키는 포인터이다. 이를 우리는 마음대로 움직일 수 있다.
std::ios::beg 파일의 맨 처음을 가리킴
std::ios::end 파일의 마지막을 가리킴
std::ios::cur 파일의 현재 위치를 가리킴
int main(){
int data[]{ 10,20,30,40,50 };
ofstream output_f("bdata.bin", ios::binary);
if (output_f.fail() == true) {
exit(1);
}
output_f.write((char*)data, sizeof(int) * 5);
output_f.close();
ifstream input_f("bdata.bin", ios::binary);
if (input_f.fail() == true) {
exit(1);
}
int k;
//input_f.seekg(sizeof(int) * 2, ios::beg);
//input_f.seekg(sizeof(int) * -3, ios::end);
input_f.seekg(sizeof(int) * 2, ios::cur);
input_f.read((char*)&k, sizeof(int));
cout << "Value : " << k << endl;
return 0;
}
'코딩 > C++' 카테고리의 다른 글
[C++ 기초] Function template / Class template (0) | 2020.12.06 |
---|---|
[C ++ 기초] 예외 처리 exception handling (try - catch) (0) | 2020.12.06 |
[C++ File] fstream I/O (ofstream, ifstream) (0) | 2020.12.06 |
[C++ 기초] Virtual function (destructor, pure) (0) | 2020.12.06 |
Comments