Funções C++ istream

Funcoes C Istream



O termo “stream” em C++ descreve o fluxo de caracteres entre o encadeamento do programa e a E/S. As classes de fluxo C++ são necessárias para ações de entrada e saída em dispositivos e arquivos de E/S. Essas classes são projetadas para gerenciar a entrada e a saída do programa e possuem funcionalidades específicas.

Hierarquia de classe de fluxo

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

float, doubles e classes são tipos de dados semelhantes a int. Uma variável exclusiva com uma classe como seu tipo de dados é chamada de objeto C++. Os objetos especiais pré-especificados 'cin' e 'cout' têm várias classes como seus tipos de dados.







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



Transmitir
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 transmitir
É um fluxo de arquivos de entrada.

De fluxo
É um fluxo de arquivos de saída. Herança é uma noção muito utilizada em 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 então especializações de si mesmas através da inclusão de novos recursos.



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

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

classe Ios
Dessa classe, todas as classes de stream descenderam. Os fluxos de entrada e saída são dois tipos diferentes.

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

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

Fluxo (entrada)
Devido à complexidade da biblioteca iostream, não poderemos abordá-la inteiramente nestas lições. No entanto, vamos destacar 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.

FLUXO

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

Classes de membros

istream::sentry
Uma classe que realiza muitas tarefas e cada vez que um procedimento de entrada é executado. Seu destruidor não é obrigado a realizar 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 a destruição de objetos sentry.

Funções

istream::gcount
Fornece a contagem de caracteres 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, read, read some, putback e unget — alteram o valor retornado por essa função. No entanto, lembre-se de que chamar peeks, putback ou unget não extrai nenhum caractere. Como resultado, a contagem sempre retornará 0.

istream::get
O caractere único retira um caractere do fluxo. O caractere é definido como valor do argumento ou retornado (primeira assinatura) (segunda assinatura).

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

istream::getline
Remove caracteres do fluxo como entrada não formatada e os salva como uma string c na variável 's' até que o caractere extraído se torne o caractere delimitador ou os caracteres 'n' tenham sido gravados em 's'. Além disso, o método interromperá a extração de caracteres se chegar ao final do arquivo.

Internamente, a função cria um objeto antes de acessar a sequência de entrada. Finalmente, ele mata o objeto antes de retornar, extraindo caracteres de seu objeto buffer de fluxo associado (supondo que tudo esteja 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 “n” caracteres tenham sido retirados ou um seja igual ao delim. Além disso, se o final do arquivo for atingido, a função interrompe a extração de caracteres. A função define o sinalizador “eofbit” se chegar a esse ponto muito cedo (antes de extrair n caracteres ou descobrir delim).

Antes de acessar a sequência de entrada, a função constrói um objeto sentry internamente (com noskipws será true). Finalmente, ele mata o objeto sentry antes de retornar, extraindo caracteres de seu objeto buffer de fluxo associado (supondo que tudo esteja em ordem) como se estivesse executando um de seus métodos membros: sbumpc ou sgetc.

istream::operador>>
O operador de extração (>>) aplica esse 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 correto, que é então salvo como o valor de “val”. Antes de acessar a sequência de entrada, a função constrói um objeto sentinela internamente (noskipws será false). Se tudo der certo, ele executa num get::get para concluir os processos de extração e análise enquanto modifica os sinalizadores de estado internos do fluxo. O objeto sentinela é finalmente destruído antes de partir.

A função gera internamente um objeto sentinela antes de ler a sequência de entrada, ele é visto como realizando uma entrada formatada. Finalmente, ele mata o objeto sentry antes de retornar, extraindo caracteres de seu objeto buffer de fluxo associado (supondo que tudo esteja em ordem) como se estivesse executando um de seus métodos membros, sbumpc ou sgetc.

Manipuladores

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

istream::colocar
O caractere restaurado tenta mover o cursor um caractere para baixo no fluxo para que o último caractere recuperado do fluxo possa ser extraído novamente por operações de entrada.

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

istream::ler
Leia um bloco de dados:

Os caracteres 'n' são retirados do fluxo e são 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 sentinela é criado primeiro 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 (supondo que tudo esteja em ordem) como se estivesse executando um de seus métodos membros: sbumpc ou sgetc.

Chamar a contagem de membros retornará o número total de caracteres que esta função leu e armazenou corretamente.

istream::readsome
Essa função depende do funcionamento interno do objeto buffer de fluxo específico vinculado ao fluxo, cujo comportamento é amplamente definido pela implementação para classes padrão.

Dentro da função, um objeto sentinela é criado primeiro antes que a sequência de entrada seja acessada. Em seguida, (se for bem-sucedido), ele chama a função de membro na disponibilidade do objeto de buffer de fluxo para determinar quantos caracteres estão disponíveis agora antes de chamar “sbumpc” para extrair até esse número de caracteres (ou sgetc). O objeto sentinela é finalmente destruído antes de partir.

istream::seekg
A posição na linha de entrada determina onde o caractere a seguir será extraído do fluxo de entrada. Antes de ler a sequência de entrada, a função constrói internamente um objeto sentinela. Então (se estiver OK), ele faz uma das duas chamadas para o objeto buffer de fluxo correspondente: pubseekpos (1) ou pubseekoff (2), (se houver). Finalmente, oblitera o item sentinela e parte.

istream::sincronizar
Alinhe o buffer de entrada:

Sincroniza a sequência de entrada controlada do buffer de fluxo vinculado. A implementação específica do objeto buffer de fluxo conectado ao fluxo determina as especificidades da operação.

istream::contar
Obtenha a posição da sequência de entrada:

Ele fornece a posição do caractere atual no fluxo de entrada. A função então retorna -1. Se o membro falhar, ele retornará true.

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

istream::unget
Remover caractere:

Tenta mover o cursor um caractere para baixo no fluxo para que o último caractere recuperado do fluxo possa ser extraído novamente 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 caractere: A sequência de caracteres retira o próximo caractere e o armazena como o valor de “c”. O processo de extrair caracteres de is e armazená-los em s, como uma string c, para (se a largura não for zero) quando um caractere de espaço em branco for encontrado ou (largura ()-1) caracteres forem extraídos.

Extração de rvalue: permite extrair de rvalue objetos istream, que tem o mesmo resultado que extrair de lvalues: Chama is>>Val.

Exemplo 1

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

#include
usando namespace padrão ;
int a Principal ( )
{
int Não ;
cout << 'Por favor, coloque um numero ' ;
comendo >> Não ;
cout << 'O valor inserido é: ' << Não << ' \n ' ;
}

Incluiríamos o arquivo de cabeçalho . Em seguida, usaremos o namespace 'std' no namespace padrão. Chamaríamos a função main(). Uma variável chamada “no” 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 instrução 'cout' é usada. Este comando imprime a linha.

O usuário inserirá qualquer valor aleatório depois que este texto for exibido na tela. Então, a declaração “cin” teria sido utilizada. Este comando requer que o usuário indique o valor. O número digitado pelo 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 obtemos qualquer nome do usuário e o mostraríamos na tela como resultado.

#include
usando namespace padrão ;

int a Principal ( )

{

Caracteres nome [ 125 ] ;
cout << 'Digite seu nome' << fim ;


comendo >> ws ;

comendo . Obter linha ( nome, 125 ) ;

cout << nome << fim ;

Retorna 0 ;

}

Nós incorporaríamos o arquivo de cabeçalho . Em seguida, utilizaremos o namespace padrão como 'std'. Chamaríamos a função main(). Dentro deste método, vamos declarar uma variável. Esta variável contém o tipo de dados 'char'. Em seguida, a instrução 'cout' é empregada. Este comando mostra o texto ‘Digite seu nome’ na tela. Depois de exibir esse texto na tela, o usuário digitaria qualquer nome. Então, utilizaríamos a declaração ‘cin’.

Este comando recebe 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 ‘return 0’ será usado.

Conclusão

Primeiro, falamos sobre o que são funções istream C++. Em seguida, observamos várias funções e definições importantes mencionadas. Neste artigo, executamos diferentes códigos que contêm uma variedade de funções istream. No primeiro código, pegamos qualquer número do usuário e exibimos esse número na tela. Na segunda, o usuário digitava o nome e imprimia esse nome na tela.