Compartilhar via


Funções de membro de fluxo de arquivos de saída

Funções de membro de fluxo de saída tem três tipos: aqueles que são equivalentes a manipulators, aquelas que executam não formatado operações de gravação e aqueles que modificar o fluxo de estado e não têm equivalente manipulator ou operador de inserção.Para saída seqüencial, formatada, você pode usar somente os operadores de inserção e manipulators.Para a saída de disco de binários de acesso aleatório, você usar outras funções de membro, com ou sem operadores de inserção.

A função open para fluxos de saída

Para usar um fluxo de arquivo de saída (ofstream), você deve associar esse fluxo com um arquivo de disco específico no construtor ou o Abrir função.Se você usar o Abrir função, você pode reutilizar o mesmo objeto de fluxo com uma série de arquivos.Em ambos os casos, os argumentos que descrevem o arquivo são os mesmos.

Quando você abre o arquivo associado a um fluxo de saída, você geralmente Especifica uma open_mode sinalizador.Você pode combinar esses sinalizadores, que são definidos como enumeradores na ios classe, com o bit a bit ou operador (|).Consulte ios_base::openmode para obter uma lista os enumeradores.

Três situações comuns de fluxo de saída envolvem opções do modo:

  • Criando um arquivo.Se o arquivo já existir, a versão antiga é excluída.

    ostream ofile( "FILENAME" );  // Default is ios::out
    ofstream ofile( "FILENAME", ios::out ); // Equivalent to above
    
  • Anexando registros a um arquivo existente ou criar um, se não existir.

    ofstream ofile( "FILENAME", ios::app );
    
  • Abrindo os dois arquivos, um de cada vez, no mesmo fluxo.

    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.
    

A função put

O colocar função grava um caractere no fluxo de saída.As duas instruções a seguintes são iguais, por padrão, mas o segundo é afetado pelos argumentos de formato do fluxo:

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

A função de gravação

O escrever função escreve um bloco de memória para um fluxo de arquivo de saída.O argumento de comprimento especifica o número de bytes gravados.Este exemplo cria um fluxo de arquivo de saída e grava o valor binário de Date estrutura a ele:

// 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 );
}

O escrever função não parar quando atingir um caractere nulo, portanto, a estrutura de classe completa é gravada.A função leva dois argumentos: uma char ponteiro e uma contagem de caracteres para escrever.Observe a conversão necessária para char * antes do endereço do objeto estrutura.

As funções seekp e tellp

Um fluxo de arquivo de saída mantém um ponteiro interno que aponta para a posição onde os dados estão a ser gravado em seguida.O seekp define esse ponteiro de função de membro e, portanto, fornece a saída de arquivo do disco de acesso aleatório.O tellp a função de membro retorna a posição do arquivo.Para obter exemplos que usam os equivalentes de fluxo de entrada para seekp e tellp, consulte as funções seekg e tellg.

A função Fechar para fluxos de saída

O Fechar a função de membro fecha o arquivo de disco associado a um fluxo de arquivo de saída.O arquivo deve ser fechado para concluir todas as saídas de disco.Se necessário, o ofstream destruidor fecha o arquivo para você, mas você pode usar o Fechar funcionar se você precisar abrir outro arquivo para o mesmo objeto de fluxo.

O destruidor de fluxo de saída fecha automaticamente se de um fluxo arquivo o construtor ou o Abrir a função de membro abriu o arquivo.Se você passar o construtor um descritor de arquivo para um arquivo já aberto ou use o Anexar a função de membro, você deve fechar explicitamente o arquivo.

Funções de processamento de erro

Use essas funções de membro para testar os erros ao gravar em um fluxo:

Função

Valor de Retorno

incorreto

Retorna true se não houver um erro irrecuperável.

falhar

Retorna true se houver um erro irrecuperável ou uma condição "esperada", como, por exemplo, um erro de conversão, ou se o arquivo não for encontrado.Processamento com freqüência pode retomar após uma chamada para Limpar com um argumento de zero.

boa

Retorna true se não há nenhuma condição de erro (irrecuperável ou não) e o sinalizador de fim-de-arquivo não está definido.

EOF

Retorna true sobre a condição de fim-de-arquivo.

Limpar

Define o estado de erro interno.Se a chamada com os argumentos padrão, ele limpa todos os bits de erro.

rdstate

Retorna o estado atual do erro.

The ! operador está sobrecarregado para realizar a mesma função que o Falha função.Assim, a expressão:

if( !cout)...

é equivalente a:

if( cout.fail() )...

O void*() operador está sobrecarregado para ser o oposto da ! operador; Assim, a expressão:

if( cout)...

é igual a:

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

O void*() operador não é equivalente a BOM porque ele não testa o final do arquivo.

Consulte também

Referência

Fluxos de saída