问题
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.
回答1:
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.
回答2:
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.
回答3:
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