Modos abertas em C ++

Esta tabela mostra os diferentes modos em C ++ que são possíveis quando abrir um arquivo. No entanto, você precisa responder a três questões básicas cada vez que você abrir um arquivo:

  • Você quer ler o arquivo ou escrever para o arquivo? Usar ifstream para ler e ofstream para escrever. Se você pretende tanto gravar e ler a partir do mesmo arquivo, use o fstream e de modo ajustado em no | out, mas boa sorte - é muito melhor para escrever para um arquivo completamente e, em seguida, fechá-lo e reabri-lo para a leitura como um objeto separado.

  • Se você está escrevendo para o arquivo e ele já existe, você quer adicionar ao conteúdo existentes (caso em que, aberto com comeu definido) ou truncar o arquivo e começar de novo (caso em que o uso trunc)?

  • Você está lendo ou gravando dados de texto ou binário? Ambos ifstream e ofstream padrão para o modo de texto. Usar binário modo se você estiver lendo ou gravando dados em bruto, não-texto.

Constantes que controlam como os arquivos são abertos
BandeiraSignificado
ios_base :: appProcuramos EOF antes de cada gravação.
ios_base :: comeuProcuramos EOF imediatamente após a abertura do arquivo, se itexists.
ios_base :: binárioAbrir arquivo em modo binário (alternativa é modo de texto).
ios_base :: noarquivo aberto para a entrada (implícita para istream).
ios_base :: outarquivo aberto para a saída (implícita para ostream).
ios_base :: truncTruncar arquivo, se ele existe (padrão para ostream).

A principal diferença entre o modo texto e binário está na forma que novas linhas são tratadas. O sistema operacional Unix foi escrito na época em que máquinas de escrever ainda estavam na moda (quando era chamado # 147 digitação # 148- vez de # 147 digitação # 148-). Unix terminou frases com um avanço de linha seguido por um retorno de carro.

sistemas operacionais posteriores não viu nenhuma razão para continuar a utilizar dois caracteres para terminar uma frase, mas eles não poderiam concordar com qual personagem de usar. Alguns usam o retorno de carro, outros utilizaram o avanço de linha, nova linha agora renomeada. padrão do C ++ é a única nova linha.

Quando um arquivo é aberto no modo de texto, biblioteca C ++ converte o caractere de nova linha única para o que é apropriado para seu sistema operacional na saída, se é um retorno de carro mais alimentação de linha, um único retorno de carro, um avanço de linha, ou algo completamente diferente. Ele executa a conversão oposta ao ler um arquivo. A biblioteca C ++ faz nenhuma dessas conversões para um arquivo aberto em modo binário.

Sempre use o modo binário ao manipular um arquivo que não está em formato legível. Caso contrário, se um byte no fluxo de dados só acontece de ser o mesmo que um retorno de carro ou um avanço de linha, o arquivo I / O biblioteca irá modificá-lo.

menu