2012-04-23 10 views
0

私はこのような文字の配列を持っている:
のostreamのCOUTとのchar *

char arr[3]="hi"; 
cout << arr;// this will print out hi 

ので、オペレータは< <ある*のostreamオブジェクトと文字を取るオーバーロードされたバージョンがあります。のでcout<<arr;最初のarrはチャット*に崩壊します。演算子< <()は、ヌル文字を見つけるまでcharポインタが指しているものを表示しますか?

同様の質問cin>>arr;第2オペランドとして配列をとる演算子>>はどのように機能しますか?

+1

はい、オーバーロードされたバージョンがたくさんあります。 http://www.cplusplus.com/reference/iostream/ostream/operator<

+1

http://www.cplusplus.com/reference/iostream/istream/operator%3E%3E/ – OmnipotentEntity

+1

また、cplusplus.comではなくcppreference.comも使用してください。 – Griwes

答えて

1

あなたostreamistreamは、最初の要素へのポインタにoperator<<char*を取るために、オーバーロードoperator>>、配列の減衰を持っています。それで、はい、それはあなたが言うことをします。

1

coutと全く同じ方法で動作します。

配列arrはポインタ型に崩壊し、istreamのオーバーロードされたバージョンも存在し、これは引数としてchar*をとります。したがって、arrは、腐敗した後にoperator>>に、char*として渡されます。

関連する問題