Programação em c ++ com a biblioteca streams
documento padrão ANSI C ++ dá uma biblioteca completa de classes que lidam com fluxos e entrada / saída geral. Felizmente, a maioria das classes na biblioteca padrão estão disponíveis com quase todos os compiladores actualmente disponíveis.
Conteúdo
Obtendo o arquivo de cabeçalho direito
A biblioteca correntes inclui várias classes que tornam a sua vida muito mais fácil. Ele também tem várias classes que podem tornar a sua vida mais complicada, principalmente porque estes são classes auxiliares que você provavelmente raramente usa. Aqui estão duas das classes mais comuns que você vai usar. (E lembre-se: Essas classes estão disponíveis em praticamente todas as implementações de C ++, se a biblioteca padrão completa está presente ou não.)
ifstream: Este é um fluxo você instancia se você quiser ler um arquivo.
ofstream: Este é um fluxo você instancia se você quiser escrever para um arquivo.
Antes de poder utilizar o ifstream e ofstream classes, você incluir o arquivo de cabeçalho apropriado. Este é o lugar onde as coisas ficam feias. Nos primeiros dias de C ++, as pessoas usavam o arquivo de cabeçalho. Mas em algum lugar em meados dos anos 1990, as pessoas começaram a usar a Standard Template Library (e no final de 1990, a biblioteca C ++ padrão), sendo que ambos necessário que você inclua
O Standard Template Library ea Biblioteca Padrão colocar todas as suas classes e objetos no interior do std namespace. Assim, quando você quiser usar um item da biblioteca de fluxos, você deve ou
Preceder seu nome com std, como neste exemplo:
std :: ofstream outfile ("MyFile.txt") -
incluir uma utilização directiva antes de as linhas onde você usa as classes de fluxo, como neste exemplo:
using namespace std-ofstream outfile ("MyFile.txt") -
Por padrão, o compilador GCC reconhece automaticamente o std namespace (é como se você tivesse uma linha using namespace STD mesmo quando você não).
Video: Instalação e configuração do Visual Studio Express no Windows para C/C++
Se você estiver usando um compilador diferente do GCC, siga o seu #incluir linhas com a linha utilização namespacestd-. Então você pode digitar todo o código de exemplo como está, incluindo os exemplos de fluxo, sem a necessidade de colocar std :: antes de cada classe ou objeto da biblioteca padrão.
Abrir um arquivo
Ir para o processador de texto, escolha Arquivo → Abrir e tipo MyGreatChapter.doc.
Opa. Você recebe uma mensagem de erro. Esse arquivo não existe.
Oh, isso é certo; você não tenha escrito ainda. Em vez disso, crie um novo documento dentro do processador de texto, tipo 800 páginas frias ao longo de uma noite relaxante, e depois (quando está tudo acabado) salvar o arquivo. Dê-lhe o nome MyGreatChapter.doc. Em seguida, desligue o processador de texto, sair à beira da piscina, se gabar para seus amigos sobre os novos romances que você está escrevendo, e ir para a cama.
Na manhã seguinte, abra o documento. Desta vez ela existe, então o processador de texto abre e lê a informação.
Como você pode ver, duas questões se apresentam na abertura de um arquivo:
Criar um novo arquivo
Abra um arquivo existente
Aqui é onde a vida fica um pouco estranho: Alguns sistemas operacionais tratar estes dois itens como uma única entidade. A razão é que quando você cria um novo arquivo, normalmente você quer começar imediatamente a usá-lo, o que significa que você deseja criar um novo arquivo e, em seguida, abri-lo. E assim o processo de criação de um arquivo é muitas vezes incorporado à direita para o processo de abertura de um arquivo.
E quando você abrir um arquivo existente que deseja gravar, você tem duas escolhas:
Apagar o contents- atual, em seguida, escrever para o arquivo.
Mantenha o conteúdo existente e escrever a sua informação para o final do arquivo. Isso é chamado anexando informações em um arquivo.
o FileOutput01 exemplo de código mostra como abrir um arquivo novo, escrever algumas informações para ele, e depois fechá-lo. (Mas espere, ainda há mais: Esta versão funciona se você tem os compiladores mais recente ANSI-conformes ou os mais velhos)
#incluir#incluir using namespace std-int main () {ofstream outfile ("../MyFile.txt") -outfile lt; lt; "Oi" lt; lt; endl-outfile.close () - retorno 0-}
O curta aplicativo abre um arquivo chamado MyFile.txt. (A parte “../” do caminho do arquivo coloca o arquivo no diretório pai para o exemplo, que é a pasta Chapter01.) Ele faz isso através da criação de uma nova instância ofstream, que é uma classe para escrever para um arquivo.
A próxima linha de código escreve a string "Oi" para o arquivo. Ele utiliza o operador de inserção, gt; gt;, assim como cout faz. De fato, ofstream é derivado a partir da mesma classe que cout é uma instância de, e então isso significa que todas as coisas que você pode fazer com cout você também pode fazer com o seu arquivo! Uau!
Quando você terminar de gravar o arquivo, feche-o, chamando o fechar função de membro. Isso é importante!
Se você quiser abrir um arquivo existente e acrescentar a ela, você pode modificar a listagem ligeiramente. Tudo que você faz é alterar os argumentos passados para o construtor da seguinte forma:
ofstream arquivo_de_saída ("MyFile.txt", Ios_base :: app) -
o ios :: app artigo é uma enumeração dentro de uma classe chamada ios, e a ios_base :: app artigo é uma enumeração na classe chamada ios_base.
o ios classe é a classe de base a partir do qual o ofstream classe é derivada. o ios classe também serve como base para uma classe ifstream, que é para leitura de arquivos.
Para compiladores mais recentes, o ios_base classe é uma base para ofstream e ifstream. (Um par de classes estão no meio. ofstream é uma classe de modelo derivado de uma classe de modelo chamado basic_ofstream, que é derivado de uma classe de modelo chamado basic_ios, que é derivado a partir da classe ios_base.)
Você também pode ler a partir de um arquivo existente. Isso funciona exatamente como o cin objeto. o FileRead01 exemplo mostrado abre o arquivo criado anteriormente e lê a seqüência de volta. Este exemplo usa o diretório pai novamente como um lugar comum para criar, atualizar e ler arquivos.
#incluir#incluir #incluir using namespace std-int main () {string palavra-ifstream infile ("../MyFile.txt") -infile gt; gt; palavra-cout lt; lt; palavra lt; lt; endl-infile.close () - retorno 0-}
Quando você executar este aplicativo, a seqüência escrito anteriormente ao processo - "Oi," - aparece na tela. Funcionou! Ele leu a corda no do arquivo!