다음을 통해 공유


출력 파일 스트림 구성원 함수

출력 스트림 구성원 함수에는 조작자와 동일한 형식, 서식 없는 쓰기 작업을 수행하는 형식 및 그 외의 스트림 상태를 수정하며 동일한 조작자 또는 삽입 연산자를 포함하지 않는 형식의 세 가지 형식이 있습니다. 서식 있는 순차적 출력을 생성하려는 경우 삽입 연산자 및 조작자만 사용할 수 있습니다. 임의 액세스 이진 디스크 출력의 경우에는 필요에 따라 삽입 연산자를 포함하여 다른 구성원 함수를 사용합니다.

출력 스트림에 대한 open 함수

출력 파일 스트림(ofstream)을 사용하려면 해당 스트림을 생성자 또는 open 함수의 특정 디스크 파일과 연결해야 합니다. 함수를 open 사용하는 경우 동일한 스트림 개체를 일련의 파일과 함께 다시 사용할 수 있습니다. 어떤 경우든 파일을 설명하는 인수는 동일합니다.

출력 스트림과 연결된 파일을 열 때 일반적으로 플래그를 지정합니다 open_mode . 클래스에서 ios 열거자로 정의된 이러한 플래그를 비트 OR( | ) 연산자와 결합할 수 있습니다. 열거자 목록은 참조 ios_base::openmode 하세요.

흔히 볼 수 있는 세 가지 출력 스트림에서는 모드 옵션이 사용됩니다.

  • 파일 만들기. 파일이 이미 있는 경우에는 이전 버전이 삭제됩니다.

    ofstream ofile("FILENAME");
    // Default is ios::out
    
    ofstream ofile("FILENAME", ios::out);
    // Equivalent to above
    
  • 기존 파일에 레코드를 추가하거나 없는 경우 레코드를 만듭니다.

    ofstream ofile("FILENAME", ios::app);
    
  • 두 파일을 같은 스트림에서 한 번에 하나씩 엽니다.

    ofstream ofile();
    ofile.open("FILE1", ios::in);
    // Do some output
    ofile.close();    // FILE1 closed
    ofile.open("FILE2", ios::in);
    // Do some more output
    ofile.close();    // FILE2 closed
    // When ofile goes out of scope it is destroyed.
    

put 함수

이 함수는 put 출력 스트림에 한 문자를 씁니다. 다음의 두 문은 기본적으로 동일하지만 두 번째 문에는 스트림의 형식 인수가 적용됩니다.

cout.put('A');

// Exactly one character written
cout <<'A'; // Format arguments 'width' and 'fill' apply

write 함수

이 함수는 write 출력 파일 스트림에 메모리 블록을 씁니다. 길이 인수가 기록되는 바이트 수를 지정합니다. 이 예에서는 출력 파일 스트림을 만들고 Date 구조체의 이진 값을 해당 스트림에 씁니다.

// write_function.cpp
// compile with: /EHsc
#include <fstream>
using namespace std;

struct Date
{
   int mo, da, yr;
};

int main( )
{
   Date dt = { 6, 10, 92 };
   ofstream tfile( "date.dat" , ios::binary );
   tfile.write( (char *) &dt, sizeof dt );
}

함수는 write 문자에 NULL 도달하면 중지되지 않으므로 전체 클래스 구조가 작성됩니다. 이 함수는 두 개의 인수, 즉 char 포인터와 쓸 문자 수를 사용합니다. 구조체 개체의 주소 앞에 필요한 캐스트 char * 를 기록해 둡니다.

seekp 및 tellp 함수

출력 파일 스트림은 다음에 데이터를 쓸 위치를 가리키는 내부 포인터를 유지합니다. seekp 구성원 함수는 이 포인터를 설정하므로 임의 액세스 디스크 파일 출력을 제공합니다. tellp 구성원 함수는 파일 위치를 반환합니다. 입력 스트림을 사용하는 예제는 The seekgtellgtellpFunctions를 seekp 참조하세요.

출력 스트림에 대한 close 함수

멤버 함수는 close 출력 파일 스트림과 연결된 디스크 파일을 닫습니다. 모든 디스크 출력을 완료하려면 파일을 닫아야 합니다. 필요한 ofstream 경우 소멸자가 파일을 닫지만 동일한 스트림 개체에 close 대해 다른 파일을 열어야 하는 경우 함수를 사용할 수 있습니다.

출력 스트림 소멸자는 생성자 또는 open 멤버 함수가 파일을 연 경우에만 스트림의 파일을 자동으로 닫습니다. 이미 열려 있는 파일에 대한 파일 설명자를 생성자에 전달하거나 멤버 함수를 attach 사용하는 경우 파일을 명시적으로 닫아야 합니다.

오류 처리 함수

스트림에 쓰는 중에 오류를 테스트하려면 다음 구성원 함수를 사용합니다.

함수 반환 값
bad 복구할 수 없는 오류가 있으면 반환 true 합니다.
fail 복구할 수 없는 오류 또는 변환 오류와 같은 "예상" 조건이 있거나 파일을 찾을 수 없는 경우를 반환 true 합니다. 인수가 0인 호출 후에 처리를 다시 시작할 clear 수 있습니다.
good true 오류 조건(복구할 수 없거나 그렇지 않은 경우)이 없고 파일 끝 플래그가 설정되지 않은 경우 반환합니다.
eof true 파일 끝 조건을 반환합니다.
clear 내부 오류 상태를 설정합니다. 기본 인수를 사용하여 호출된 경우에는 모든 오류 비트를 지웁니다.
[rdstate](basic-ios-class.md#rdstate 현재 오류 상태를 반환합니다.

! 연산자는 함수와 동일한 함수를 수행하도록 오버로드됩니다fail. 따라서 다음 식은

if(!cout)...

다음과 동일합니다.

if(cout.fail())...

void*() 연산자는 연산자의 반대로 ! 오버로드되므로 식은 다음과 같습니다.

if(cout)...

다음과 동일합니다.

if(!cout.fail())...

연산자는 void*() 파일의 끝을 테스트하지 않기 때문에 동일 good 하지 않습니다.

참고 항목

출력 스트림