Funções C ++ iStream

Funções C ++ iStream
O termo "fluxo" em C ++ descreve o fluxo de caracteres entre o tópico do programa e a E/S. São necessárias classes de fluxo C ++ para inserir e produzir ações em dispositivos e arquivos de IO. Essas classes foram projetadas para gerenciar a entrada e saída do programa e têm funcionalidade particular.

Hierarquia de classe de fluxo

Uma classe C ++ é composta de métodos necessários para gerenciar e governar os dados que ele contém.

flutuar, duplas e classes são tipos de dados semelhantes a int. Uma variável única com uma classe como seu tipo de dados é referida como um objeto C ++. Os objetos especiais pré-especificados 'CIN' e 'Cout' têm várias classes como seus tipos de dados.

Os dados escritos para 'cout' ou leitura de 'CIN' são exemplos de fluxos de dados para dentro ou fora dos programas em C++. Atualmente, estamos considerando as quatro classes a seguir para esta:

Istream
Qualquer propósito pode ser servido por este fluxo de entrada. Uma ilustração de um istream é Cin.

Ostream
É um fluxo de saída com vários usos. Ostreams vêm nas formas de Cout e CIN.

Se fluxo
É um fluxo de arquivos de entrada.

De fluxo
É um fluxo de arquivos de saída. A herança é uma noção que é fortemente usada na programação orientada a objetos, como em C ++, onde algumas classes assumem as características de outras classes que já foram criadas. As classes ancestrais tornam -se especializações de si mesmas através da inclusão de novos recursos.

Se a classe de fluxo
Um ifstream pode ser tratado da mesma maneira que um istream, que é o que é.

Da classe de fluxo
Da mesma maneira que o IFStreams funciona, mas com a saída em vez de entrada, um OfStream é um fluxo de arquivo de saída. Um de fluxo é usado da mesma maneira que o cout após ser construído, aberto e verificado para não ter erros.

Classe iOS
A partir desta aula, todas as aulas de fluxo desceram. Os fluxos de entrada e saída são dois tipos diferentes.

Ele define as peças do fluxo que são independentes do status de entrada ou saída do fluxo na base do iOS.

Ao contrário dos membros discutidos na base do iOS, os membros que dependem dos parâmetros de modelo são descritos nesta parte.

Stream (entrada)
Devido à complexidade da biblioteca iostream, não poderemos cobri -la inteiramente nessas lições. No entanto, destacaremos as funções que são mais usadas. Nesta seção, veremos a classe de entrada de vários ângulos (istream).

Aprendemos que o operador de extração (>>) será utilizado para adquirir os dados de um fluxo de entrada.

Istream

Na linguagem de programação C ++, o fluxo de entrada é tratado pela classe ISTREAM. A entrada é lida e entendida como uma série de caracteres usando esses objetos de fluxo de entrada. A entrada é tratada pelo CIN.

Classes de membros

ISTREAM :: Sentry
Uma aula que realiza muitas tarefas e cada vez que um procedimento de entrada é executado. Seu destruidor não é obrigado a executar nenhuma ação. No entanto, as implementações podem executar tarefas adicionais de inicialização ou limpeza no fluxo compartilhado por todas as operações de entrada usando a criação e destruição de objetos de sentinela.

Funções

istream :: gcount
Dá a contagem de personagens que foi obtida da ação de entrada não formatada mais recente do objeto. Os procedimentos de entrada não formatados- Get, GetLine, Ignore, Peek, Leia, Leia alguns, Puntador e Unir-Alterem o Valor retornado por esta função. No entanto, lembre. Como resultado, a contagem sempre retornará 0.

iStream :: Get
O único personagem tira um personagem do fluxo. O personagem é definido como o valor do argumento ou devolvido (primeira assinatura) (segunda assinatura).

C String: Se o caractere delimitador estiver presente, ele não será removido da sequência de entrada, em vez de ser mantido como o seguinte personagem a ser recuperado do fluxo, se estiver presente.

iStream :: getLine
Remove os caracteres do fluxo como entrada não formatada e os salva como uma corda C na variável "s" até que o personagem extraído se torne o personagem delimitando ou os caracteres "n" foram escritos para 's'. Além disso, o método parará de extrair caracteres se chegar ao final do arquivo.

Internamente, a função cria um objeto antes de acessar a sequência de entrada. Finalmente, mata o objeto antes de retornar, extraindo caracteres de seu objeto buffer de fluxo associado (assumindo que tudo está em ordem) como se estivesse executando um de seus métodos de membro, Sbumpc ou SGETC.

ISTREAM :: Ignore
Os caracteres são retirados da sequência de entrada e descartados um de cada vez até que os caracteres “n” sejam retirados ou um compare. Além disso, se o final do arquivo for alcançado, a função interrompe a extração de caracteres. A função define a bandeira "eofbit" se atingir esse ponto muito cedo (antes de extrair caracteres n ou descobrir o delim).

Antes de acessar a sequência de entrada, a função constrói um objeto de sentinela internamente (com o noskipws será verdadeiro). Finalmente, ele mata o objeto Sentry antes de retornar, extraindo caracteres de seu objeto buffer de fluxo associado (assumindo que tudo está em ordem) como se fosse executando um de seus métodos de membro: SBUMPC ou SGETC.

ISTREAM :: Operador >>
O operador de extração (>>) aplica este operador a um fluxo de entrada. Tem muitos membros como uma função.

Tipo aritmético

Os caracteres são retirados do fluxo e analisados ​​sequencialmente para representar um valor do tipo certo, que é então salvo como o valor de "Val". Antes de acessar a sequência de entrada, a função constrói um objeto de sentinela internamente (os noskipws serão falsos). Se tudo verificar bem, ele executa o NUM GET :: Po para concluir os processos de extração e análise enquanto modifica os sinalizadores de estado interno do fluxo. O objeto Sentry é finalmente destruído antes de sair.

A função gera internamente um objeto Sentry antes de ler a sequência de entrada, é vista como execução de entrada formatada. Finalmente, mata o objeto Sentry antes de retornar, extraindo caracteres de seu objeto de buffer de fluxo associado (assumindo que tudo está em ordem) como se estivesse executando um de seus métodos de membro, SBUMPC ou SGETC.

Manipuladores

O PF (*isto) é chamado, onde PF pode ser um manipulador. Os manipuladores são rotinas criadas particularmente para serem chamadas quando este operador é invocado. A sequência de entrada não é afetada por este procedimento e nenhum caractere é extraído.

ISTREAM :: PUTBACK
O caráter restaurado tenta mover o cursor para baixo um personagem no fluxo, para que o último personagem recuperado do fluxo possa ser mais uma vez extraído por operações de entrada.

Antes de acessar a sequência de entrada, a função constrói um objeto de sentinela internamente. Em seguida, ele chama Sputbackc (C) em seu objeto de buffer de fluxo associado (se bom). O objeto Sentry é finalmente destruído antes de sair.

ISTREAM :: Leia
Leia um bloco de dados:

Os caracteres 'n' são retirados do riacho e então armazenados na matriz que é apontada por “s”. Esta função apenas replica um bloco de dados sem inspecionar o conteúdo dos dados ou adicionar um caractere nulo no final.

Dentro da função, um objeto de sentinela é criado pela primeira vez antes que a sequência de entrada seja acessada. Finalmente, ele mata o objeto Sentry antes de retornar, extraindo caracteres de seu objeto buffer de fluxo associado (assumindo que tudo está em ordem) como se fosse executando um de seus métodos de membro: SBUMPC ou SGETC.

A contagem de membros de chamada retornará o número total de caracteres que essa função leu e armazenou corretamente.

ISTREAM :: Readsome
Esta função depende do funcionamento interno do objeto de buffer de fluxo específico vinculado ao fluxo, cujo comportamento é amplamente definido para a implementação para classes padrão.

Dentro da função, um objeto de sentinela é criado pela primeira vez antes que a sequência de entrada seja acessada. Então (se for bem -sucedido), ele chama a função do membro no objeto de buffer de fluxo para determinar quantos caracteres estão agora disponíveis antes de ligar para "sbumpc" para extrair esse número de caracteres (ou SGETC). O objeto Sentry é finalmente destruído antes de sair.

ISTREAM :: Seekg
A posição na linha de entrada determina onde o seguinte caractere será puxado do fluxo de entrada. Antes de ler a sequência de entrada, a função constrói internamente um objeto de sentinela. Então (se ok), faz uma das duas chamadas para o objeto de buffer de fluxo correspondente: PubSeekPos (1) ou PubSeekoff (2), (se houver). Finalmente, oblitera o item da sentinela e parte.

iStream :: Sync
Alinhe o buffer de entrada:

Traz a sequência de entrada controlada do buffer de fluxo vinculado à sincronização. A implementação específica do objeto de buffer de fluxo conectado ao fluxo determina os detalhes da operação.

ISTREAM :: Tellg
Obtenha a posição da sequência de entrada:

Dá a posição do personagem atual no fluxo de entrada. A função retorna -1. Se o membro falhar, ele retornará verdadeiro.

Ele retorna rdbuf ()-> pubseekoff, se não (0, cur, in). O objeto Sentry é finalmente destruído antes de sair.

ISTREAM :: UNGET
Remova o personagem:

Tenta mover o cursor para baixo um caractere no fluxo para que o último caractere recuperado do fluxo possa ser mais uma vez extraído por operações de entrada.

Não membro

Operador >> (iStream)
O operador de extração (>>) fornece entrada formatada com esta ação quando aplicada a um fluxo de entrada.

Um personagem: a sequência do personagem tira o próximo personagem e o armazena como o valor de "C". O processo de extrair caracteres de Is e armazená-los em S, como uma cordão C, para (se a largura não for zero) quando um caractere de espaço em branco é encontrado ou (Width () -1) caracteres foram extraídos.

Extração de RValue: Permite a extração de objetos rvalue istream, que tem o mesmo resultado que a extração de lvalues: ele chama é >> Val.

Exemplo 1

Nesse caso, examinaríamos como podemos obter qualquer valor do usuário e depois exibi -lo como resultado na tela.

#incluir
usando namespace std;
int main ()

int não;
cout<<"Please enter a number ";
Cin >> não;
cout<<"The entered value is: " << no << "\n";

Incluímos o arquivo de cabeçalho. Em seguida, usaremos o espaço para nome 'std' no espaço de nome padrão. Nós chamaríamos a função principal (). Uma variável chamada "não" será declarada dentro deste método. O tipo de dados "int" é representado para esta variável. O termo "int" é a abreviação de um número inteiro. Depois, a declaração 'cout' é usada. Este comando imprime a linha.

O usuário inserirá qualquer valor aleatório após a exibição deste texto na tela. Então, a declaração "CIN" teria sido utilizada. Este comando exige que o usuário indique o valor. O número inserido do usuário seria salvo em uma variável. O valor fornecido pelo usuário seria exibido na tela usando o comando 'cout'.

Exemplo 2

Nesse caso, veríamos como recebemos qualquer nome do usuário e depois o mostramos na tela como o resultado.

#incluir
usando namespace std;
int main ()

nome de char [125];
cout << "Enter your name" << endl;
CIN >> WS;
CIN.getLine (nome, 125);
cout << name << endl;
retornar 0;

Incorporaríamos o arquivo de cabeçalho . Em seguida, utilizaremos o espaço de nome padrão como 'std'. Nós invocaríamos a função principal (). Dentro deste método, declararemos uma variável. Esta variável mantém o tipo de dados 'char'. Então a declaração 'cout' é empregada. Este comando mostra o texto 'Digite seu nome' na tela. Depois de exibir este texto na tela, o usuário inseriria qualquer nome. Então, nós utilizaríamos a declaração 'CIN'.

Este comando leva o valor do usuário. O nome fornecido seria armazenado em uma variável 'WS'. Aqui, mais uma vez, utilizaríamos o comando 'CIN'. Dentro deste comando, a função getLine () está sendo aplicada. Esta função contém o parâmetro que inclui o nome inserido pelo usuário e o comprimento do nome. O comando 'cout' será usado para mostrar o nome fornecido pelo usuário. Para encerrar o código, o comando 'retornar 0' será usado.

Conclusão

Primeiro, conversamos sobre o que são funções C ++ ISTream. Então observamos várias funções e definições importantes mencionadas. Neste artigo, executamos códigos diferentes que contêm uma variedade de funções do iStream. No primeiro código, pegamos qualquer número do usuário e exibimos esse número na tela. No segundo, o usuário inseriu o nome e imprimiu esse nome na tela.