Object of class istream that represents the standard input stream oriented to narrow characters (of type char). It corresponds to the C streamstdin.
The standard input stream is a source of characters determined by the environment. It is generally assumed to be input from an external source, such as the keyboard or a file.
As an object of class istream, characters can be retrieved either as formatted data using the extraction operator (operator>>) or as unformatted data, using member functions such as read.
The object is declared in header <iostream> with external linkage and static duration: it lasts the entire duration of the program.
In terms of static initialization order, cin is guaranteed to be properly constructed and initialized no later than the first time an object of type ios_base::Init is constructed.
In terms of static initialization order, cin is guaranteed to be properly constructed and initialized no later than the first time an object of type ios_base::Init is constructed, with the inclusion of <iostream> counting as at least one initialization of such objects with static duration.
cin is tied to the standard output stream cout (see ios::tie), which indicates that cout's buffer is flushed (see ostream::flush) before each i/o operation performed on cin.
A program should not mix input operations on cin with input operations on wcin (or with other wide-oriented input operations on stdin): Once an input operation has been performed on either, the standard input stream acquires an orientation (either narrow or wide) that can only be safely changed by calling freopen on stdin.
For more information on the operations supported by cin, see the reference for its type: istream.