I have an array of chars like this one:
char arr[3]="hi";
cout << arr;// this will print out hi
So is the operator<< has an overloaded version that takes an ostream object and char *. so cout<<arr;
first arr will decays to a chat * . and then operator<<() will print out what the char pointer is pointing to until it find a null-character ?
The same question for cin>>arr;
how does it work with operator>> that takes an array as the second operand.
Your ostream
and istream
do have operator<<
and operator>>
overloaded to take a char*
, and arrays decay into pointers to the first element. So, yes it does what you say it does.
Exactly in the same way as cout
works.
The array arr
decays into pointer type, and there exists an overloaded version of istream
as well which takes char*
as argument. So arr
gets passed to the operator>>
as char*
after decaying.
Please see here for details on cout
: Standard output stream. Whilst in this page, please click and see the link that says "ostream::operator<<"
Likewise see here for details on cin
: Standard input stream. Whilst here, please click and see the link that says "operator (>>)"
来源:https://stackoverflow.com/questions/10285753/ostream-cout-and-char