C ++, assim como C, não oferece operações de entrada e saída como parte da linguagem em si. Ao invés disto, ela oferece uma biblioteca que adiciona as funções de entrada e saída de forma elegante, usando o conceito de streams.
O próximo exemplo mostra, ainda que de forma muito simples, o uso dos métodos de entrada e saída. Algumas variáveis são definidas e enviadas para o dispositivo de saída padrão (o monitor) através do stream cout. Observe como, ao contrário do que acontece com printf em C, o programador não tem de dizer ao sistema que tipo de dado está sendo enviado para a saída.
indentation
The value of index is -23 The value of distance is 12.345 The value of letter is X The value of name is John Doe The decimal value of index is 31 The octal value of index is 37 The hex value of index is 1f The character letter is X Input a decimal value --> 999 The hex value of the input is 3e7
O operador <<
, chamado de operador de
inserção, diz para o sistema para enviar a seguinte
variável ou constante para a saída, mas deixa o sistema
decidir como apresentar o dado. Observe a consistência que
este operador apresenta: em uma mesma linha de código, ele é
utilizado para apresentar um string de caracteres e números
(inteiros, ponto flutuante), sem que o programador tenha que se
preocupar qual a rotina que será chamada para a
apresentação. O sistema é encarregado de decidir qual a
rotina apropriada. Este comportamento já sugere algumas das
vantagens da orientação a objetos, como observado no
Capítulo .
A grande vantagem da biblioteca de streams de C ++ é que ela suporta boa parte das necessidades de entrada e saída de forma simples e eficiente. Os compiladores C ++ podem também oferecer algumas facilidades adicionais de formatação para esta biblioteca, mas em último caso a rotina tradicional printf pode continuar sendo usada juntamente com cout sempre que necessário. Entretanto, deve-se lembrar que printf não é uma rotina muito eficiente, pois ela deve estar preparada para resolver todos os casos possíveis de formatação de saída -- ou seja, é uma rotina complexa. Algumas das facilidades de formatação são apresentadas no exemplo acima: o mesmo dado é apresentado em formatos decimal, octal e hexadecimal.
Além do stream cout, há também o stream
cin que é usado para ler dados do dispositivo de entrada
padrão. Neste caso, o operador >>
, chamado de
operador de extração, é utilizado. Como no uso
de cout, os operadores dec, oct e hex
podem selecionar a base de numeração adotada para a entrada;
como usual, a base decimal é o padrão quando nada é
especificado.
Há também um stream cerr pré-definido, que envia dados para o dispositivo de erros padrão. Estes três streams, cout, cin e cerr correspondem aos apontadores para stream stdout, stdin e stderr da linguagem C, e são automaticamente abertos e fechados pelo sistema.
Os mesmos mecanismos de manipulação de streams podem ser utilizados para manipular arquivos do usuário. O próximo exemplo ilustra as capacidades de manipulação de arquivos através da biblioteca de streams de C ++.
indentation
Como resultado da execução deste programa (caso o arquivo de entrada exista e não haja problemas com a impressora), o arquivo de entrada seria copiado para um outro arquivo com nome copy e seria também impresso através da impressora.