Program Language/C & C++

[C++] file in/out

야곰야곰+책벌레 2021. 11. 8. 16:05
728x90
반응형

C++에서 파일 관련하여 제공하는 Stream 클래스는 다음과 같다.

  • ofstream : 파일에 쓰는 기능의 Stream class
  • ifstream : 파일을 읽는 기능의 Stream class
  • fstream : 파일에 대한 읽고 쓰는 기능을 모두 갖춘 Stream class
  • wifstream : 유니코드 문자로 쓰인 텍스트 파일을 읽는 Stream class
  • wofstream : 유니코드 문자를 텍스트 파일에 쓰는 Stream class

<파일 쓰기 예>

#include <locale>
#include <fstream>
using namespace std;

int main()
{
	setlocale(LC_ALL, "");
	ofstream fout;
	fout.open("D:\\sample.txt");
	
	fout << "Writing" << endl;

	fout.close();
	return 0;
}

<파일 읽기 예>

#include <locale>
#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main()
{
	setlocale(LC_ALL, "");
	ifstream fin;
	fin.open("D:\\sample.txt");

	if (!fin.good())
	{
		wcout << L"파일 열기 실패" << endl;
	}
	
	string str;
	while (!fin.eof())
	{
		getline(fin, str);
		cout << str << endl;
	}

	fin.close();
	return 0;
}

open() 함수의 mode 설정

ios::in : input
ios::out : output
ios::ate : at the end. 파일의 맨 끝으로 이동한다.
ios::binary : binary
ios::app : 이어 쓰기
ios::trunc : 새로 쓰기

해당 모드는 or 연산자 ( | )를 이용하여 여러 개의 모드를 사용할 수 있다.

 

Stream의 상태를 검사하는 함수

bad() : 읽거나 쓰기 실패 시 true
fail() : bad()와 같지만 숫자를 읽을 때 문자가 포함되어 있는 경우에도 true
eof() : 파일의 끝에 도달한 경우 true
good() : 위의 3 경우가 아닌 경우 true
tellg() : get 포인터의 위치를 pos_type형으로 리턴. (pos_type은 일반 정수 범위를 넘을 수 있는 정수)
tellp() : put 포인터 위치를 리턴
seekg() : get 포인터의 위치를 변경
seekp() : put 포인터의 위치를 변경

 

728x90
반응형