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.
Bandeira | Significado |
---|---|
ios_base :: app | Procuramos EOF antes de cada gravação. |
ios_base :: comeu | Procuramos EOF imediatamente após a abertura do arquivo, se itexists. |
ios_base :: binário | Abrir arquivo em modo binário (alternativa é modo de texto). |
ios_base :: no | arquivo aberto para a entrada (implícita para istream). |
ios_base :: out | arquivo aberto para a saída (implícita para ostream). |
ios_base :: trunc | Truncar 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.