영넌 개발로그

[C++ File] text file VS binary file / file pointer 본문

코딩/C++

[C++ File] text file VS binary file / file pointer

영넌 2020. 12. 6. 06:54

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;

}

Comments