ifstream
은 inputFileStream
의 줄임말로 읽어올 파일을 가리킬 때 사용한다. ofstream
은 outputFileStream
의 줄임말로 읽어올 파일을 가리킬 때 사용한다.
파일을 읽어올 때는 ifstream
클래스를, 파일에 내용을 출력할 때는 ofstream
클래스의 멤버 함수로 처리한다.
#include <iostream>
#include <fstream>
int main(void)
{
1. std::ifstream ifs("numbers");
unsigned int dst;
unsigned int dst2;
2. ifs >> dst >> dst2;
3. if (!ifs.is_open())
{
std::cout << "파일을 열 수가 없습니다!" << std::endl;
exit(1);
}
4. std::cout << dst << dst2 << std::endl;
std::cout << "-------------------" << std::endl;
5. std::ofstream ofs("test.out");
6. ofs << "i like ponies a whole damn lot" << std::endl;
ofs.close();
}
1 번에서 ifstream
클래스를 이용해서 ifs
객체를 만들었고, 바로 객체 메서드를 실행했다.
이때 std::ifstream ifs(”numbers”)
는 코드 실행 과정에 open
함수를 실행하기 때문에, 같은 디렉토리의 nubmers 라는 파일의 fd를 연결한다.
2 번에서는 dst
와 dst2
변수에 numbers
파일의 내용을 출력한다. 만약 해당 파일이 없다면, 3 번 조건문에 걸려서 파일을 열 수가 없습니다!
라는 문구가 출력된다.
2번은 화이트스페이스
를 기준으로 변수에 넣고, 4번에서 dst
와 dst2
를 출력한다.
예시!
13 4 5 6
를 넣으면, 134
출력
134 55 6
를 넣으면, 13455
5 번 std::ofstream ofs("test.out")
을 통해 test.out
파일을 출력 스트림에 연결한다.
그 후 6 번을 통해 test.out 에 문자열을 출력한다. ofs << "i like ponies a whole damn lot" << std::endl
test.out 파일이 없으면 파일을 만들어서 문자열을 넣고, 있으면 기존에 있던 문자열을 지우고 넣는다.
전체 과정은 다음과 같다.
1 번을 보면 파일이 cpp
파일과 numbers
파일만 있다.
컴파일 후 2 번을 보면, ifstream
으로 파일의 값을 입력받은 변수들이 출력된다.
3 번을 보면 실행 후 test.out
파일이 생성된 것을 확인할 수 있다.
그 후 4 번의 내용을 cat
으로 출력하면 ofstream
으로 파일에 출력한 값을 확인할 수 있다.