<iostream>

Declara objetos que controlam a leitura e a gravação nos fluxos padrão. Essa inclusão é geralmente o único cabeçalho necessário para executar a entrada e a saída de um programa C++.

Sintaxe

#include <iostream>

Observação

A biblioteca <iostream> usa as instruções e #include <ios>, #include <streambuf>, #include <istream> e #include <ostream>.

Comentários

Os objetos se encaixam em dois grupos:

  • cin, cout, cerr e clog são orientados por byte, executando transferências convencionais de um byte por vez.

  • wcin, wcout, wcerr e wclog são orientados por largura, convertendo de e para os caracteres largos que o programa manipula internamente.

Após executar determinadas operações em um fluxo, como a entrada padrão, você não pode executar operações de uma orientação diferente no mesmo fluxo. Portanto, um programa não pode operar de forma intercambiável em cin e wcin, por exemplo.

Todos os objetos declarados nesse cabeçalho compartilham uma propriedade peculiar: você pode presumir que eles foram construídos antes de qualquer objeto estático que você definir, em uma unidade de tradução que inclui <iostream>. Da mesma forma, você pode presumir que esses objetos não são destruídos antes dos destruidores de qualquer um desses objetos estáticos que você definir. (Os fluxos de saída, entretanto, são liberados durante o encerramento do programa.) Portanto, é possível ler ou gravar com segurança nos fluxos padrão antes da inicialização do programa e após o encerramento do programa.

No entanto, essa garantia não é universal. Um construtor estático pode chamar uma função em outra unidade de conversão. A função chamada não pode presumir que os objetos declarados nesse cabeçalho foram construídos, dada a ordem incerta na qual as unidades de tradução participam da construção estática. Para usar esses objetos em tal contexto, primeiro você deve criar um objeto da classe ios_base::Init.

Objetos de fluxo global

Nome Descrição
cerr Especifica o fluxo global cerr.
cin Especifica o fluxo global cin.
clog Especifica o fluxo global clog.
cout Especifica o fluxo global cout.
wcerr Especifica o fluxo global wcerr.
wcin Especifica o fluxo global wcin.
wclog Especifica o fluxo global wclog.
wcout Especifica o fluxo global wcout.

cerr

O objeto cerr controla a saída para um buffer de fluxo associado ao objeto stderr, declarado em <cstdio>.

extern ostream cerr;

Valor de Devolução

Um objeto ostream.

Comentários

O objeto controla inserções não armazenadas em buffer na saída de erro padrão como um fluxo de bytes. Uma vez que o objeto é construído, a expressão cerr.flags & unitbuf é diferente de zero e cerr.tie() == &cout. Para ver mais detalhes, confira cerr.flags e unitbuf.

Exemplo

// iostream_cerr.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

using namespace std;

void TestWide( )
{
   int i = 0;
   wcout << L"Enter a number: ";
   wcin >> i;
   wcerr << L"test for wcerr" << endl;
   wclog << L"test for wclog" << endl;
}

int main( )
{
   int i = 0;
   cout << "Enter a number: ";
   cin >> i;
   cerr << "test for cerr" << endl;
   clog << "test for clog" << endl;
   TestWide( );
}

cin

Especifica o fluxo global cin.

extern istream cin;

Valor de Devolução

Um objeto istream.

Comentários

O objeto controla extrações da entrada padrão como um fluxo de bytes. Após o objeto ser criado, a chamada cin.tie retorna &cout.

Exemplo

Neste exemplo, cin define o bit de falha no fluxo quando se depara com caracteres não numéricos. O programa limpa o bit de falha e retira o caractere inválido do fluxo para continuar.

// iostream_cin.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

int main()
{
   int x;
   cout << "enter choice:";
   cin >> x;
   while (x < 1 || x > 4)
   {
      cout << "Invalid choice, try again:";
      cin >> x;
      // not a numeric character, probably
      // clear the failure and pull off the non-numeric character
      if (cin.fail())
      {
         cin.clear();
         char c;
         cin >> c;
      }
   }
}
2

clog

Especifica o fluxo global clog.

extern ostream clog;

Valor de Devolução

Um objeto ostream.

Comentários

O objeto controla inserções armazenadas em buffer na saída de erro padrão como um fluxo de bytes.

Exemplo

Confira cerr para ver um exemplo de como usar clog.

cout

Especifica o fluxo global cout.

extern ostream cout;

Valor de Devolução

Um objeto ostream.

Comentários

O objeto controla inserções na saída padrão como um fluxo de bytes.

Exemplo

Confira cerr para ver um exemplo de como usar cout.

wcerr

Especifica o fluxo global wcerr.

extern wostream wcerr;

Valor de Devolução

Um objeto wostream.

Comentários

O objeto controla inserções não armazenadas em buffer na saída de erro padrão como um fluxo largo. Uma vez que o objeto é construído, a expressão wcerr.flags & unitbuf é diferente de zero. Para ver mais detalhes, confira wcerr.flags e unitbuf.

Exemplo

Confira cerr para ver um exemplo de como usar wcerr.

wcin

Especifica o fluxo global wcin.

extern wistream wcin;

Valor de Devolução

Um objeto wistream.

Comentários

O objeto controla extrações da entrada padrão como um fluxo largo. Após o objeto ser criado, a chamada wcin.tie retorna &wcout.

Exemplo

Confira cerr para ver um exemplo de como usar wcin.

wclog

Especifica o fluxo global wclog.

extern wostream wclog;

Valor de Devolução

Um objeto wostream.

Comentários

O objeto controla inserções armazenadas em buffer na saída de erro padrão como um fluxo largo.

Exemplo

Confira cerr para ver um exemplo de como usar wclog.

wcout

Especifica o fluxo global wcout.

extern wostream wcout;

Valor de Devolução

Um objeto wostream.

Comentários

O objeto controla inserções na saída padrão como um fluxo largo.

Exemplo

Confira cerr para ver um exemplo de como usar wcout.

Instâncias de CString em uma instrução wcout devem ser convertidas em const wchar_t*, conforme mostrado no exemplo a seguir.

CString cs("meow");

wcout <<(const wchar_t*) cs <<endl;

Para obter mais informações, consulte Operações CString básicas.

Confira também

Referência de Arquivos de Cabeçalho
Acesso Thread-Safe na Biblioteca Padrão C++
Programação de iostream
Convenções de iostreams