Entrada / Saída Básica C ++

As bibliotecas padrão C ++ fornecem um amplo conjunto de recursos de entrada / saída que veremos nos capítulos subsequentes. Este capítulo discutirá as operações de E / S muito básicas e mais comuns necessárias para a programação C ++.

E / S C ++ ocorre em fluxos, que são sequências de bytes. Se os bytes fluem de um dispositivo como um teclado, uma unidade de disco ou uma conexão de rede, etc. para a memória principal, isso é chamadoinput operation e se os bytes fluem da memória principal para um dispositivo como uma tela de exibição, uma impressora, uma unidade de disco ou uma conexão de rede, etc., isso é chamado output operation.

Arquivos de cabeçalho da biblioteca de E / S

Existem os seguintes arquivos de cabeçalho importantes para programas C ++ -

Sr. Não Arquivo de cabeçalho e função e descrição
1

<iostream>

Este arquivo define o cin, cout, cerr e clog objetos, que correspondem ao fluxo de entrada padrão, o fluxo de saída padrão, o fluxo de erro padrão sem buffer e o fluxo de erro padrão em buffer, respectivamente.

2

<iomanip>

Este arquivo declara serviços úteis para realizar I / O formatado com os chamados manipuladores de fluxo parametrizados, como setw e setprecision.

3

<fstream>

Este arquivo declara serviços para processamento de arquivo controlado pelo usuário. Discutiremos sobre isso em detalhes no capítulo relacionado a Arquivo e Fluxo.

O fluxo de saída padrão (cout)

O objeto predefinido cout é uma instância de ostreamclasse. Diz-se que o objeto cout está "conectado" ao dispositivo de saída padrão, que geralmente é a tela de exibição. ocout é usado em conjunto com o operador de inserção de fluxo, que é escrito como <<, que são dois sinais a menos, conforme mostrado no exemplo a seguir.

#include <iostream>
 
using namespace std;
 
int main() {
   char str[] = "Hello C++";
 
   cout << "Value of str is : " << str << endl;
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Value of str is : Hello C++

O compilador C ++ também determina o tipo de dados da variável a ser produzida e seleciona o operador de inserção de fluxo apropriado para exibir o valor. O operador << está sobrecarregado para gerar itens de dados de tipos integrados inteiros, flutuantes, duplos, strings e valores de ponteiro.

O operador de inserção << pode ser usado mais de uma vez em uma única instrução como mostrado acima e endl é usado para adicionar uma nova linha no final da linha.

O fluxo de entrada padrão (cin)

O objeto predefinido cin é uma instância de istreamclasse. Diz-se que o objeto cin está conectado ao dispositivo de entrada padrão, que geralmente é o teclado. ocin é usado em conjunto com o operador de extração de fluxo, que é escrito como >>, que são dois sinais maiores que conforme mostrado no exemplo a seguir.

#include <iostream>
 
using namespace std;
 
int main() {
   char name[50];
 
   cout << "Please enter your name: ";
   cin >> name;
   cout << "Your name is: " << name << endl;
 
}

Quando o código acima for compilado e executado, ele solicitará que você insira um nome. Você insere um valor e pressiona Enter para ver o seguinte resultado -

Please enter your name: cplusplus
Your name is: cplusplus

O compilador C ++ também determina o tipo de dados do valor inserido e seleciona o operador de extração de fluxo apropriado para extrair o valor e armazená-lo nas variáveis ​​fornecidas.

O operador de extração de fluxo >> pode ser usado mais de uma vez em uma única instrução. Para solicitar mais de um dado, você pode usar o seguinte -

cin >> name >> age;

Isso será equivalente às duas declarações a seguir -

cin >> name;
cin >> age;

O fluxo de erro padrão (cerr)

O objeto predefinido cerr é uma instância de ostreamclasse. Diz-se que o objeto cerr está conectado ao dispositivo de erro padrão, que também é uma tela de exibição, mas o objetocerr é retirado do buffer e cada inserção de fluxo em cerr faz com que sua saída apareça imediatamente.

o cerr também é usado em conjunto com o operador de inserção de fluxo, conforme mostrado no exemplo a seguir.

#include <iostream>
 
using namespace std;
 
int main() {
   char str[] = "Unable to read....";
 
   cerr << "Error message : " << str << endl;
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Error message : Unable to read....

O fluxo de registro padrão (entupir)

O objeto predefinido clog é uma instância de ostreamclasse. Diz-se que o objeto de obstrução está anexado ao dispositivo de erro padrão, que também é uma tela de exibição, mas o objetoclogestá em buffer. Isso significa que cada inserção entupida pode fazer com que sua saída seja mantida em um buffer até que o buffer seja preenchido ou até que o buffer seja esvaziado.

o clog também é usado em conjunto com o operador de inserção de fluxo, conforme mostrado no exemplo a seguir.

#include <iostream>
 
using namespace std;
 
int main() {
   char str[] = "Unable to read....";
 
   clog << "Error message : " << str << endl;
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Error message : Unable to read....

Você não seria capaz de ver qualquer diferença em cout, cerr e clog com esses pequenos exemplos, mas ao escrever e executar programas grandes a diferença se torna óbvia. Portanto, é uma boa prática exibir mensagens de erro usando cerr stream e, ao exibir outras mensagens de log, deve-se usar o clog.