C++ Entrada/Saída Básica: Exemplo Cout, Cin, Cerr

⚡ Resumo Inteligente

C++ As operações de entrada e saída dependem de objetos de fluxo que movem dados como sequências de bytes entre programas e dispositivos, com cin lendo a entrada do teclado e cout, cerr e clog escrevendo a saída na tela.

  • 🔘 Fluxos: As tarefas de entrada e saída são transmitidas como sequências de bytes chamadas fluxos, movendo dados entre a memória principal e os dispositivos.
  • 📥 Arquivos de cabeçalho: As bibliotecas iostream, iomanip e fstream definem os objetos e manipuladores usados ​​para entrada e saída básicas.
  • 🖨️ cout e cin: O objeto cout imprime com o operador de inserção, enquanto cin lê valores com o operador ex.tracoperador de ção.
  • ⚠️ cerr e entupimento: Ambos reportam erros, porém o cerr permanece sem buffer para exibição imediata, enquanto o clog armazena as mensagens em buffer primeiro.
  • 🛠️ Manipulação de erros: As verificações de bom, ruim, falha e fim de arquivo (EOF) leem o estado do fluxo, de modo que as operações com falha sejam detectadas com segurança.
  • 🤖 Assistência de IA: Assistentes de codificação com IA, como o GitHub Copilot, geram código padrão para `cin` e `cout` a partir de um comentário curto ou nome de função.

C++ Entrada e saída básicas

Em que estão os fluxos C++?

C++ fornece aos usuários uma série de bibliotecas que eles podem usar para executar tarefas de entrada/saída. Essas tarefas são realizadas na forma de sequências de bytes, popularmente chamadas de streams.

Os fluxos são divididos em dois:

Tipos de fluxos

  • Fluxo de entrada: Este é um tipo de fluxo em que os bytes fluem de um dispositivo como um teclado para a memória principal.
  • Fluxo de saída: Este é um tipo de fluxo onde os bytes fluem na direção oposta, ou seja, da memória principal e depois para o dispositivo como a tela do display.

Como funcionam os fluxos?

C++ fluxos funcionam da seguinte maneira:

  1. Primeiro, um fluxo é inicializado com o tipo correto.
  2. Em seguida, você deve indicar onde a operação de E/S ocorrerá, utilizando ponteiros get/put.
  3. Depois de chegar ao local certo em um fluxo, você pode executar tarefas de entrada e saída usando os operadores >> e <<, respectivamente.

Tabela de Função

A seguir estão as funções fornecidas no arquivo de cabeçalho stream.h:

AulaFunções
ArquivobufEle define buffers de arquivo para leitura/gravação. Possui funções close() e open()
fstreambaseÉ a classe base para as classes ifstream, fstream e ofstream. Suas operações são comuns aos fluxos de arquivos.
ifstreamÉ uma classe de fluxo de arquivo de entrada para fornecer operações de entrada.
de correnteÉ uma classe de fluxo de arquivo de saída para fornecer operações de saída.
streamÉ uma classe de fluxo de entrada/saída. Suporta operações simultâneas de entrada/saída.

C++ Arquivos de cabeçalho para entrada/saída

C++ fornece três bibliotecas que vêm com funções para executar tarefas básicas de entrada/saída. Eles incluem:

  • Iostream: É um acrônimo para fluxo de entrada/saída padrão. Este arquivo de cabeçalho vem com definições para objetos como cin/cout/cerr.
  • Iomanip: É um acrônimo para manipuladores de entrada/saída. A biblioteca vem com funções que podem ser utilizadas para a manipulação de streams. Ele contém definições para objetos como setw, setprecision e outros.
  • Fstream: Este é um arquivo de cabeçalho para descrever o fluxo de arquivos. Ele lida com dados que são lidos do arquivo como entrada ou gravados em um arquivo, a saída.

As palavras-chave cin e cout são muito populares em C++. Eles são usados ​​para receber entradas e imprimir saídas, respectivamente. Para usá-los, você deve incluir o arquivo de cabeçalho iostream em seu programa. A razão é que eles estão definidos nesse arquivo de cabeçalho. A não inclusão do arquivo de cabeçalho iostream gerará um erro. Isto resulta de uma falha do C++ compilador para entender o significado das palavras-chave.

Os principais objetos definidos no arquivo de cabeçalho iostream são cin, cout, cerr e clog. Vamos discuti-los.

std :: cout

O objeto cout é uma instância da classe iostream. É usado para produzir saída em um dispositivo de saída padrão, que normalmente é a tela. É usado junto com o operador de inserção de stream (<<).

Exemplo

#include <iostream>
using namespace std;
int main() {

	char welcome[] = "Welcome to Guru99";

	cout << welcome << endl;

	return 0;
}

Saída:

std :: cout

Aqui está uma captura de tela do código:

std :: cout

Code Explicação:

  1. Inclua o arquivo de cabeçalho iostream onde o objeto cout está definido.
  2. Inclua o namespace std para que não tenhamos que chamá-lo ao usar suas classes.
  3. Chame a função main(). O código do programa deve ser adicionado ao seu corpo. A chave de abertura {marca o início de seu corpo.
  4. Crie uma variável de caractere chamada "welcome" para armazenar a string "Welcome to" (Bem-vindo ao/à) Guru99.
  5. Imprima o valor da string bem-vindo no console. O final é um C++ palavra-chave que significa linha final. Move o cursor para começar a imprimir o texto na próxima linha.
  6. O programa deve retornar um valor após a execução bem-sucedida.
  7. Fim do corpo da função main().

std :: cin

O objeto cin é uma instância da classe istream. Ele lê a entrada do dispositivo de entrada, o teclado. Normalmente, é usado em conjunto com o ex.tracoperador de ção (>>). O extracO objeto tion é responsável por extracdados inseridos pelo teclado a partir do objeto cin.

Exemplo

O exemplo a seguir demonstra como usar a palavra-chave cin em C++:

#include <iostream>
using namespace std;
int main()
{
	int number;

	cout << "Enter a number:";
	cin >> number;
	cout << "\nYou entered: " << number;

	return 0;
}

Saída:

std :: cin

Aqui está uma captura de tela do código:

std :: cin

Code Explicação:

  1. Inclua o arquivo de cabeçalho iostream em nosso programa. O objeto cin é definido neste arquivo de cabeçalho.
  2. Inclua o namespace std para usar suas classes. Você não precisará chamar std ao usar suas classes.
  3. Chame a função main(). O código do programa deve ser adicionado ao seu corpo.
  4. O início do corpo do programa.
  5. Declare um variável inteira número nomeado.
  6. Imprima uma mensagem na tela solicitando que o usuário insira um número.
  7. Leia o valor inserido pelo usuário no console a partir do teclado.
  8. Imprima o valor lido acima no console junto com outro texto.
  9. O programa deve retornar um valor se for executado com sucesso.
  10. Fim do corpo da função principal.

std::cerr

O objeto cerr forma o fluxo de erros padrão para gerar erros em C++. Cerr é uma instância da classe ostream. O objeto cerr não tem buffer. Isso significa que ele é usado quando uma mensagem de erro deve ser exibida imediatamente.

Como não tem buffer, ele não armazena mensagens de erro para exibição posterior. É usado junto com o operador de inserção de stream (<<).

Exemplo

#include <iostream>
using namespace std;
int main() {

	cerr << "An Error occurred!";

	return 0;
}

Saída:

std::cerr

Aqui está uma captura de tela do código:

std::cerr

Code Explicação:

  1. Inclui o arquivo de cabeçalho iostream onde o objeto cerr foi definido.
  2. Inclua o namespace std para que não tenhamos que chamá-lo ao usar suas classes.
  3. Chame a função main(). A lógica do programa deve ser adicionada ao seu corpo. A chave de abertura marca o início do corpo da função.
  4. Use o objeto cerr para imprimir um erro no console.
  5. O programa deve retornar um valor após a execução bem-sucedida.
  6. Fim do corpo da função principal.

std::entupir

O objeto clog é uma instância da classe ostream. É usado para mostrar erros na tela padrão, o monitor. É semelhante ao objeto cerr, mas é armazenado em buffer. Como está em buffer, ele armazena a mensagem de erro no buffer até que o buffer seja preenchido/limpo. É usado junto com o operador de inserção de stream (<<).

Exemplo

#include <iostream>
using namespace std;
int main() {
	clog << "An Error occurred!";
	return 0;
}

Saída:

std::entupir

Aqui está uma captura de tela do código:

std::entupir

Code Explicação:

  1. Incluindo o arquivo de cabeçalho iostream no qual o objeto clog é definido.
  2. Incluindo o namespace std para que possamos usar suas classes sem chamá-lo.
  3. Chamando a função main(). A lógica do programa deve ser adicionada ao seu corpo. O { marca o início do corpo da função.
  4. Use o objeto clog para imprimir um erro na saída padrão, o monitor.
  5. O programa deve retornar um valor após a conclusão bem-sucedida.
  6. O final do corpo da função main().

Tratamento de erros com fluxos IO

Os mesmos objetos de fluxo também informam se uma operação foi bem-sucedida, o que é revelado pelas verificações de estado do fluxo.

Para verificar se um fluxo é válido ou não, você pode usá-lo como booleano.

Aqui está um exemplo:

ifstream file( "myfile.txt" );
if ( ! file )
{
        cout << "File NOT opened!" << endl;
}

Para obter mais detalhes sobre o status do stream, você pode usar estas funções:

  • good()- retornará verdadeiro se tudo estiver bem.
  • bad()- retornará verdadeiro se ocorrer um erro fatal.
  • fail() - retornará verdadeiro após operação de fluxo malsucedida.
  • eof()- retornará verdadeiro se chegar ao final de um arquivo.

Para saber se uma determinada operação de leitura/gravação falhou, teste o resultado da leitura.

Por exemplo, para verificar se o usuário inseriu um número inteiro válido, faça o seguinte:

int p;
if ( cin >> p ) 
{
        cout << "Enter valid number" << endl;
}

Perguntas Frequentes

O objeto cout é seguro em relação a tipos e usa o operador de inserção, portanto, detecta automaticamente o tipo de cada valor. O printf da linguagem C depende de especificadores de formato, como %d, que devem corresponder manualmente aos argumentos.

O extracO operador de interrupção para no primeiro espaço, então cin lê apenas uma palavra. Para capturar uma linha inteira com espaços, chame getline(cin, variável), que lê até o caractere de nova linha.

Ambos iniciam uma nova linha, mas o `endl` também limpa o buffer de saída a cada vez, o que pode tornar os loops lentos. Prefira uma simples quebra de linha e reserve o `endl` para quando o buffer precisar ser limpo imediatamente.

Os objetos cin, cout, cerr e clog residem no namespace std. Escrever usando o namespace std permite digitar cout em vez de std::cout. Projetos grandes geralmente mantêm o prefixo std explícito para evitar conflitos.

Inclua o cabeçalho iomanip e use manipuladores com cout. O manipulador setw reserva a largura de um campo, e setprecision define quantos dígitos aparecem, formatando números e colunas sem alterar os valores armazenados.

Sim. Como `cout` e `cerr` são fluxos separados, um shell pode redirecionar a saída normal para um arquivo enquanto os erros ainda chegam à tela. No código, `rdbuf` pode apontar um fluxo para outro buffer.

Sim. Os assistentes de codificação com IA leem um comentário ou nome de função e produzem instruções cin e cout, além da inclusão do iostream e um prompt formatado. RevAnalisar a lógica do fluxo gerado para identificar casos extremos continua sendo uma prática prudente.

Sim. Travas deslizantes portáteis Copiloto do GitHub Completa a formatação cout, os loops de validação cin e as verificações de erro cerr enquanto você digita. É 2026. C++ A inteligência de código adiciona reconhecimento de símbolos semânticos, de modo que as sugestões para vários arquivos permaneçam consistentes.

Resuma esta postagem com: