Lar Finanças Pessoais Marcando as bandeiras ios em C ++ - dummies

Marcando as bandeiras ios em C ++ - dummies

Vídeo: Descodificación del sobrepeso por Marta Menéndez 2024

Vídeo: Descodificación del sobrepeso por Marta Menéndez 2024
Anonim

Quando você abre um arquivo construindo uma instância ofstream ou ifstream, você pode modificar a forma como o arquivo será aberto fornecendo o que são chamados de sinalizadores. Em termos de computador, um sinalizador é simplesmente um pequeno item cuja presença ou falta de presença informa uma função de como fazer algo. Com as classes ofstream e ifstream, a função em questão é o construtor.

Uma bandeira parece ios:: app se você estiver usando um compilador que não seja totalmente compatível com ANSI, ou se parece com ios_base:: app, se você estiver usando um que seja totalmente compatível com ANSI. Esta bandeira em particular significa que você deseja escrever em um arquivo, mas deseja anexar a dados existentes que já estejam em um arquivo. Você fornece essa bandeira como um argumento do construtor para o ofstream, como em qualquer um dos seguintes exemplos:

ofstream outfile ("AppendableFile. Txt", ios:: app); outstream do arquivo ("AppendableFile. txt", ios_base:: app);

Você pode ver que o sinalizador é adicionado como um segundo parâmetro para o construtor. Existem outras bandeiras além do aplicativo, e você pode combiná-las usando o operador ou, | Por exemplo, uma bandeira é ios:: nocreate (que não está incluído nos compiladores mais recentes).

Este significa "apenas abrir o arquivo se ele já existe. "Ou seja, não crie o arquivo se ele não existir. (Lembre-se, o ofstream cria um arquivo se ele ainda não existir). Se o arquivo não existir, o aberto falhará e, quando você falhar, você retornará um verdadeiro .

A bandeira ios:: nocreate é útil com ios:: app. Juntos, isso significa abrir um arquivo existente e anexá-lo . Ou seja, os dois juntos funcionarão somente se o arquivo já existir, e a chamada abrirá o arquivo para uma operação anexa. Se o arquivo ainda não existir, o arquivo não será criado. Aqui está uma amostra de chamada:

outstream outstream ("… / MyFile. Txt", ios:: app | ios:: nocreate); se (outfile. fail ()) {cout << "não pôde abrir o arquivo!" << endl; retornar 0;} outfile << "oi" << endl; outfile. fechar();

Se MyFile. txt não existe quando você executa esse código, você recebe a mensagem. Não foi possível abrir o arquivo! Mas se MyFile. txt existe, o aplicativo o abre, acrescenta a linha Hi e, finalmente, fecha-a.

Acontece que a bandeira nocreate não está disponível na nova Biblioteca Padrão. Vadio. Portanto, o código funciona apenas se você estiver usando uma versão anterior da biblioteca. Ao usar o código:: compilador de blocos, você vê a seguinte mensagem de erro:

erro: 'nocreate' não é membro de '; std:: ios '

No entanto, você quer testar se seu compilador específico inclui uma biblioteca que suporte ios:: nocreate.Seu compilador pode suportá-lo de qualquer maneira, mesmo que inclua a nova Biblioteca Padrão. Como uma alternativa para ios:: nocreate, você pode usar o seguinte código (encontrado no exemplo FileOutput02):

ifstream infile ("… / MyFile. Txt"); se (infile. fail ()) {cout << "não pôde abrir o arquivo!" << endl; retornar 0;} infile. fechar(); ofstream outfile ("… / MyFile. txt", ios:: app); outfile << "oi" << endl; outfile. fechar();

Neste caso, você começa por tentar abrir o arquivo para leitura. Se o arquivo não existir, você não pode ler e o código sai com uma mensagem de falha. Se o código pode ler do arquivo, ele reabre o arquivo para escrever. Esta é uma solução complicada, mas funciona.

A seguir, uma lista dos sinalizadores disponíveis. Primeiro, aqui estão os ios, no caso de você estar usando um compilador que não é completamente compatível com ANSI:

  • ios:: app: Esse sinalizador significa que deseja abrir um arquivo e anexá-lo.

  • ios:: in: Inclua esta bandeira se quiser ler de um arquivo.

  • ios:: out : Incluir este sinalizador se você quiser escrever em um arquivo.

  • ios:: trunc : Inclua este sinalizador se desejar limpar o conteúdo do arquivo antes de escrever para ele. É o oposto de anexar, e também é o padrão se você não incluir especificamente o ios:: app.

  • ios:: nocreate : Use este sinalizador se quiser garantir que o arquivo não seja criado se ele não existir, resultando na não abertura do arquivo.

  • ios:: noreplace : Esta bandeira é o oposto do nocreado. Use esta bandeira se você quiser apenas criar um novo arquivo. Se você usa esse sinalizador e o arquivo já existe, o arquivo não será aberto e essa falha retornará true .

Os compiladores compatíveis com ANSI não suportam o ios:: noreplace flag também. Neste caso, você pode usar o oposto da correção para a bandeira ios: nocreate, como mostrado aqui (e encontrado no exemplo FileOutput03):

ifstream infile ("… / MyFile. Txt"); se (! infile. fail ()) {cout << "o arquivo já existe!" << endl; retornar 0;} infile. fechar(); outstream ("… / MyFile. txt"); outfile << "oi" << endl; outfile. fechar();

Neste caso, o código tenta abrir o arquivo para leitura. Se o arquivo existir, o código mostra uma mensagem de erro e sai. Caso contrário, o código cria um novo arquivo e grava-lo.

Os seguintes sinalizadores estão disponíveis em um compilador que é absolutamente compatível com ANSI!

  • ios:: comeu: use esta bandeira para ir ao final do arquivo depois de abri-lo. Normalmente, você usa esse sinalizador quando deseja anexar dados ao arquivo.

  • ios_base:: binário: use esta bandeira para especificar que o arquivo que você está abrindo conterá dados binários - ou seja, dados que não representam cadeias de caracteres.

  • ios_base:: in: Especifique este sinalizador quando quiser ler de um arquivo.

  • ios_base:: out: Inclua esta bandeira quando quiser escrever para um arquivo.

  • ios_base:: trunc: Inclua este sinalizador se desejar limpar o conteúdo de um arquivo antes de escrever para ele.

  • ios_base:: app: Inclua este sinalizador se desejar anexar ao arquivo. É o oposto do trunc - ou seja, a informação que já está no arquivo quando você abri-lo permanecerá lá.

Por que você precisa de uma bandeira e uma bandeira fora? Parece que o computador deve saber se você está escrevendo para um arquivo ou lendo dele, dependendo (respectivamente) de se você usa ostream ou ifstream. A resposta para o porquê você tem uma bandeira e uma bandeira fora é que outras classes estão disponíveis além de corrente e ifstream.

Os compiladores que ainda não suportam totalmente o padrão ANSI têm uma classe genérica em suas bibliotecas chamadas fstream. Os compiladores compatíveis com ANSI têm em suas bibliotecas uma classe de modelo chamada basic_filebuf e uma classe chamada arquivobuf. Se você usar essas classes, você pode usar as bandeiras de entrada e saída.

Marcando as bandeiras ios em C ++ - dummies

Escolha dos editores

Filmando fotos em situações especiais com Canon Rebel Série T3 Câmeras - manequins

Filmando fotos em situações especiais com Canon Rebel Série T3 Câmeras - manequins

ÀS vezes haverá não há problema em tirar o seu Canon Rebel T3 ou T3i fora e tirar fotos com configurações automáticas. A maior parte do tempo, você pode fazer com alguns ajustes simples. Alguns assuntos e situações de filmagem apresentam alguns desafios adicionais que exigem combinações de configurações mais complicadas. ...

Escolha dos editores

Obtendo o WordPress. org Software - dummies

Obtendo o WordPress. org Software - dummies

Depois de classificar seu host e domínio do site, você deve baixar e extrair os arquivos do WordPress pela WordPress. org e colocá-los no seu computador. Escolha um lugar que você lembrará, como um diretório de Documentos ou Download. Siga estas etapas: aponte seu navegador para o WordPress. org. A página principal do WordPress aparece. Clique em ...

Google AdSense para Bloggers de Mom - dummies

Google AdSense para Bloggers de Mom - dummies

Google O AdSense não é uma rede de anúncios orientada para a mãe, nem é A melhor opção de publicidade para a maioria dos blogs da mãe. Há certamente exceções a isso, especialmente se você blogar sobre produtos ou marcas. Todos os blogueiros que exibem publicidade devem ter um provedor de anúncios de backup - e o AdSense é uma ótima solução para essa necessidade. AdSense aprova ...

Relatório de conteúdo principal do google Analytics - dummies

Relatório de conteúdo principal do google Analytics - dummies

O relatório Top Content é um dos relatórios mais importantes no Google Analytics. Este relatório mostra as postagens mais populares no blog da sua mãe. Seu conteúdo popular dá uma visão do porquê seus leitores chegam até você. Os tópicos dessas postagens indicam o que as pessoas gostam, mesmo quando não comentam. Para visualizar ...

Escolha dos editores

Como fazer uma imagem disparar um link - as manequins

Como fazer uma imagem disparar um link - as manequins

Usam imagens para navegação . Eles são mais bonitos que os links de texto simples, e você pode adicionar a forma e a função na sua página com um elemento. Para criar uma imagem que desencadeia um link, você substitui um elemento no lugar do texto ao qual você ancoraria seu link. Esta marcação liga o texto: ...

Como abrir links em novos Windows ou Tabs com HTML5 - dummies

Como abrir links em novos Windows ou Tabs com HTML5 - dummies

O A web funciona porque você pode vincular páginas em seu site para páginas nos sites de outras pessoas usando um elemento de âncora simples. Quando você liga para o site de outra pessoa, você envia usuários para longe de seu próprio site. Para manter os usuários no seu site, HTML pode abrir a página vinculada em uma nova janela ...

Como criar tabelas em HTML5 - dummies

Como criar tabelas em HTML5 - dummies

O recipiente de marcação primária para tabelas em HTML é a tabela elemento. Ou seja, você usa a tag de abertura para denotar o início de uma tabela e você adiciona a tag de fechamento para encerrá-la. Além disso, os blocos de construção básicos para dados de tabela em HTML são a linha da tabela ( ) e os dados da tabela ...