As you know, 'cin' is an instance of the class 'istream'. We could declare our own additional instances of this class, but there rarely is a need to. This section, then, will first review the functionality we already know, related to input with 'cin', and then explore some additional elements. When this happens, the cin stream has a status of 'fail'.
Similar rules apply for doubles.
However, with variables of type char, only one character is read, and it is much harder to have an input failure. The same process occurs with strings, but here one has to be more careful. Since the system only stops removing characters from the stream when it encounters a blank, it is possible to overflow the memory set aside for the string. If this happens, the system will blithely continue reading characters into memory meant for other purposes until a blank is encountered. The consequences of this could be disastrous.