<iostream>
Dichiara gli oggetti che controllano la lettura e la scrittura nei flussi standard. Questo include è spesso l'unica intestazione necessaria per eseguire input e output da un programma C++.
Sintassi
#include <iostream>
Nota
La <iostream>
libreria usa le #include <ios>
istruzioni , #include <streambuf>
#include <istream>
, e #include <ostream>
.
Osservazioni:
Gli oggetti rientrano in due gruppi:
cin
cerr
,cout
, eclog
sono orientati ai byte, eseguendo trasferimenti di byte convenzionali in fase di esecuzione.wcin
,wcout
,wcerr
ewclog
sono orientati a livello, traducendo in e dai caratteri wide che il programma manipola internamente.
Dopo aver eseguito determinate operazioni su un flusso, ad esempio l'input standard, non è possibile eseguire operazioni di orientamento diverso nello stesso flusso. Pertanto, un programma non può operare in modo intercambiabile su e cin
wcin
, ad esempio.
Tutti gli oggetti dichiarati in questa intestazione condividono una proprietà peculiare: è possibile presupporre che vengano costruiti prima di qualsiasi oggetto statico definito, in un'unità di conversione che include <iostream>
. Allo stesso modo, è possibile presupporre che questi oggetti non vengano eliminati definitivamente prima dei distruttori per gli oggetti statici definiti dall'utente. I flussi di output vengono tuttavia scaricati durante la terminazione del programma. Pertanto, è possibile leggere o scrivere in modo sicuro nei flussi standard prima dell'avvio del programma e dopo la chiusura del programma.
Questa garanzia non è tuttavia universale. Un costruttore statico potrebbe chiamare una funzione in un'altra unità di conversione. La funzione chiamata non può presupporre che gli oggetti dichiarati in questa intestazione siano stati costruiti, data l'ordine incerto in cui le unità di conversione partecipano alla costruzione statica. Per usare questi oggetti in un contesto di questo tipo, è prima necessario costruire un oggetto della classe ios_base::Init
.
Oggetti dei flussi globali
Nome | Descrizione |
---|---|
cerr |
Specifica il flusso globale cerr . |
cin |
Specifica il flusso globale cin . |
clog |
Specifica il flusso globale clog . |
cout |
Specifica il flusso globale cout . |
wcerr |
Specifica il flusso globale wcerr . |
wcin |
Specifica il flusso globale wcin . |
wclog |
Specifica il flusso globale wclog . |
wcout |
Specifica il flusso globale wcout . |
cerr
L'oggetto cerr
controlla l'output in un buffer di flusso associato all'oggetto stderr
, dichiarato in <cstdio>
.
extern ostream cerr;
Valore restituito
Oggetto ostream
.
Osservazioni:
L'oggetto controlla eventuali inserimenti senza buffer nell'output di errore standard come un flusso di byte. Una volta costruito l'oggetto, l'espressione cerr.flags & unitbuf
è diversa da zero e cerr.tie() == &cout
. Per altri dettagli, vedere cerr.flags
e unitbuf
.
Esempio
// 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
Specifica il flusso globale cin
.
extern istream cin;
Valore restituito
Oggetto istream
.
Osservazioni:
L'oggetto controlla eventuali estrazioni dall'input standard come un flusso di byte. Una volta costruito l'oggetto, la chiamata cin.tie
restituisce &cout
.
Esempio
In questo esempio, cin
imposta il bit di errore nel flusso quando si tratta di caratteri non numerici. Il programma cancella il bit di errore e rimuove il carattere non valido dal flusso per continuare.
// 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
Specifica il flusso globale clog
.
extern ostream clog;
Valore restituito
Oggetto ostream
.
Osservazioni:
L'oggetto controlla eventuali inserimenti con buffer nell'output di errore standard come un flusso di byte.
Esempio
Vedere cerr
per un esempio di uso clog
di .
cout
Specifica il flusso globale cout
.
extern ostream cout;
Valore restituito
Oggetto ostream
.
Osservazioni:
L'oggetto controlla eventuali inserimenti nell'output standard come un flusso di byte.
Esempio
Vedere cerr
per un esempio di uso cout
di .
wcerr
Specifica il flusso globale wcerr
.
extern wostream wcerr;
Valore restituito
Oggetto wostream
.
Osservazioni:
L'oggetto controlla gli inserimenti senza buffer nell'output di errore standard come un flusso wide. Una volta costruito l'oggetto, l'espressione wcerr.flags & unitbuf
è diversa da zero. Per altri dettagli, vedere wcerr.flags
e unitbuf
.
Esempio
Vedere cerr
per un esempio di uso wcerr
di .
wcin
Specifica il flusso globale wcin
.
extern wistream wcin;
Valore restituito
Oggetto wistream
.
Osservazioni:
L'oggetto controlla eventuali estrazioni dall'input standard come un flusso wide. Una volta costruito l'oggetto, la chiamata wcin.tie
restituisce &wcout
.
Esempio
Vedere cerr
per un esempio di uso wcin
di .
wclog
Specifica il flusso globale wclog
.
extern wostream wclog;
Valore restituito
Oggetto wostream
.
Osservazioni:
L'oggetto controlla eventuali inserimenti con buffer nell'output di errore standard come un flusso wide.
Esempio
Vedere cerr
per un esempio di uso wclog
di .
wcout
Specifica il flusso globale wcout
.
extern wostream wcout;
Valore restituito
Oggetto wostream
.
Osservazioni:
L'oggetto controlla gli inserimenti nell'output standard come flusso wide.
Esempio
Vedere cerr
per un esempio di uso wcout
di .
Il cast delle istanze CString
in un'istruzione wcout
deve essere eseguite in const wchar_t*
, come mostrato nel seguente esempio.
CString cs("meow");
wcout <<(const wchar_t*) cs <<endl;
Per altre informazioni, vedere Operazioni CString di base.
Vedi anche
Riferimento file di intestazione
Thread Safety in the C++ Standard Library (Sicurezza dei thread nella libreria standard C++)
Programmazione iostream
iostreams Conventions (Convenzioni di iostream)