사용자 삽입 이미지
C++에서 파일 입출력을 하려면
파일 입력을 위한 ifstream클래스,
파일 출력을 위한 ofstream클래스,
파일 입출력을 함께 처리하는 fstream클래스를 사용합니다.



 

파일에 기록(ofstream)

1. 프로그램에 fstream 헤더파일을 포함시킨다.
이 파일을 포함시키면 대부분의 컴파일러에서 iostream 파일이 자동으로 포함된다.
  - #include <fstream>

2. 출력 스트림을 관리하기 위해 ofstream 객체를 생성한다.
  - ofstream fout; // fout이라는 ofstream 객체 생성

3. 이 객체를 open() 함수를 사용해서 하나의 특별한 파일에 연결시킨다.
  - fout.open("filename"); // fout을 'filename'이라는 파일과 연결시킨다.

※ 2번과 3번을 한줄에 처리할수 있다.
  - ofstream fout.open("filename"); // fout이라는 ofstream 객체를 생성하고 'filename'파일과 연결시킨다.

4. cout을 사용하는 것과 동일한 방법으로 그 객체를 사용한다.
  - fout << "Hello world"; // file에 'Hello world'를 기록한다.

※ 주의
1. 프로그램은 'file'이라는 파일이 없다면 그 이름으로 새로운 파일을 만든다.
2. 'file'이라는 파일이 존재할 때, 디폴트 모드로 연다면 자동으로 파일 크기가 0이 되어 이전의 파일내용이 폐기된다. 여기에 관한것은 파일모드를 참조하면된다.


파일을 읽기(ifstream)

1. 파일에 기록과 같다
  - #include <fstream>

2. 입력 스트림을 관리하기 위해 ifstream 객체를 생성한다.
  - ifstream fin; // fin이라는 ifstream 객체 생성

3. 이 객체를 open() 함수를 사용해서 하나의 특별한 파일에 연결시킨다.
  - fin.open("filename"); // fin을 'filename'이라는 파일과 연결시킨다.

※ 2번과 3번을 한줄에 처리할수 있다.
  - ffstream fin.open("filename"); // fout이라는 ofstream 객체를 생성하고 'filename'파일과 연결시킨다.

4. cin을 사용하는 것과 동일한 방법으로 그 객체를 사용한다.
  - char ch;
    fin >> ch;   // 파일에서 한 문자를 읽는다.
    char buf[50];
    fin >> buf;   // 파일에서 한 단어를 읽는다.
    fin.getline(buf, 50); // 파일에서 한 행을 읽는다.

입력 스트림과 출력 스트림 객체의 수명이 다했을 때, 보통 프로그램이 종료될 때 파일과의 연결이 자동으로 닫힌다. 하지만 close()를 사용해서 명시적으로 파일과의 연결을 닫을수 있다.
  - fout.close();  // 파일과의 출력 연결을 닫는다.
    fin.close();  // 파일과의 입력 연결을 닫는다.

연결을 끊는다고 fin이나 fout객체가 사라지는 것은 아니다.
이 스트림을 동일한 파일에 또는 다른 파일에 다시 연결시켜서 사용할 수 있다.

아래는 위에 코드를 활용해 만든 간단한 예제이다.

코드보기


아래는 위의 코드를 실행한 결과이다.

사용자 삽입 이미지













프로그램 실행 후 프로그램이 있는 폴더로 가보면 abqezc라는 파일을 확일할 수 있다.
이 파일을 메모장이나 다른 텍스트 편집기로 열어보면

파일 입출력입니다.
입력한 숫자는 352입니다.

라고 저장되어있는걸 확인할 수 있습니다.

참고 : C++ 기초 플러스 4판 P.1183 <성안당>
크리에이티브 커먼즈 라이선스
Creative Commons License

comment

  1. ss 2012/11/18 17:27  address  modify  write

    #include <stdio.h>
    int main()
    {
    double a=10;
    double b=3;
    double res;

    res=a/b;

    printf("나눈값은 %.2lf입니다 res");

    return 0;
    }

  2. ss 2012/11/18 17:27  address  modify  write

    #include <stdio.h>
    int main()
    {
    double a=10;
    double b=3;
    double res;

    res=a/b;

    printf("나눈값은 %.2lf입니다 res");

    return 0;
    }

  3. s 2012/11/18 17:27  address  modify  write

    #include <stdio.h>
    int main()
    {
    double a=10;
    double b=3;
    double res;

    res=a/b;

    printf("나눈값은 %.2lf입니다 res");

    return 0;
    }




티스토리 툴바