A definição de Iostream em C++
Este guia discute como utilizar a biblioteca básica de entrada / saída em C++.
Utilize o cabeçalho <iostream> para incluir objetos de fluxo global em C++
A biblioteca de entrada / saída é a parte central do C++ STL utilizada por quase todos os programas do mundo real. As operações de E / S do C++ são abstraídas na forma de fluxos, que podem ser considerados sequências de dados genéricas. Uma abstração de fluxo é implementada usando várias classes herdadas e é exposta ao usuário como diferentes objetos nomeados especializados para certas operações de E / S. Observe que a biblioteca de E / S baseada em fluxo como um todo pode ser usada para imprimir texto no console ou ler / gravar dados de arquivos no disco. Você pode pensar na biblioteca de fluxos como o meio principal para o programa C++ interagir com o sistema de arquivos e dispositivos.
As duas classes de fluxo essenciais são istream e ostream, correspondendo aos fluxos usados para ler e escrever os dados. Essas classes fornecem operações em fluxos de caracteres. Existem quatro objetos de fluxo global frequentemente utilizados por programas para realizar operações como obter a entrada do usuário ou imprimir as mensagens de erro. Esses objetos são:
cout: representa um fluxo de saída padrão correspondente aostdoutem C.cin: é o fluxo de entrada padrão (corresponde astdin).cerr: é o fluxo de erro padrão implementado como fluxo sem buffer (corresponde astderr).clog: é o fluxo de registro padrão que não tem o equivalente em C e oferece a versão em buffer decerr.
Outra parte importante da biblioteca de fluxo de E / S são os operadores usados para encadear as operações entre diferentes objetos. O operador <<, chamado de operador de inserção de fluxo, envia os dados para um objeto de fluxo. Por outro lado, o operador >> é conhecido como extrator de fluxo. Observe que esses operadores geralmente conduzem operações de deslocamento em tipos aritméticos, mas são implementados como operadores sobrecarregados neste caso.
No exemplo a seguir, mostramos o uso básico das classes de E / S baseadas em fluxo C++. Usamos o objeto cout para enviar o conteúdo da string para o console. Uma vez que cout corresponde a um fluxo de saída padrão, usamos o operador de inserção para enviar os dados, e normalmente eles são impressos no console. Observe que o objeto endl é chamado de manipulador que produz um caractere de nova linha e esvazia o buffer de saída.
Os manipuladores de fluxo vêm em vários tipos, existem aqueles que modificam a entrada / saída como endl e existem aqueles que forçam o objeto de fluxo a interpretar a entrada / saída de forma diferente. Os últimos incluem os manipuladores de base numérica como: dec, hex e oct.
#include <iostream>
#include <string>
using std::cerr;
using std::cout;
using std::endl;
using std::string;
int main() {
string str1("what does iostream mean?");
cout << str1 << endl;
cout << str1 << " - " << str1 << endl;
return EXIT_SUCCESS;
}
Resultado:
what does iostream mean ? what does iostream mean ? -what does iostream mean ?
Conforme mostrado no programa anterior, o recurso mais poderoso de operadores de fluxo e objetos é ser encadeado sequencialmente várias vezes. Neste caso, vemos que podemos combinar os valores literais com outras variáveis para enviar todos eles para um fluxo cout. Em seguida, empregamos os objetos cin e cerr para ler a entrada do usuário e imprimir os dados lidos.
Observe que o objeto do tipo que precisa ser lido deve ser declarado antecipadamente como o número flutuante x. Outra propriedade útil dos operadores de inserção / extração é que eles retornam o valor diferente de zero se a operação falhar. Alternativamente, você pode usar as funções de membro fail e bad para verificar se o objeto de fluxo fornecido encontrou erros específicos.
#include <iostream>
#include <string>
using std::cerr;
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
float x;
cout << "enter float: ";
if (!(cin >> x)) {
cerr << "error while reading the floating point value!" << endl;
return EXIT_FAILURE;
}
cout << x;
return EXIT_SUCCESS;
}
Resultado:
error while reading the floating point value !
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook