2016-09-15 16 views
-2

私はこの実行時に文字列の名前は、文字列の最初の要素のアドレスを意味していますが:文字列全体が印刷されますどのように来るCスタイルの文字列

char str[]="dog"; 
cout<<str<<endl; 

を?

+0

なぜ、もう一方は許可されませんか?文字列の先頭を 'cout'に渡し、その点から文字列を読み込むように実装されています。どのような謎がありますか?私があなたに私の通りの始まりの場所を与えたら、どうしてあなたは通り全体を歩くことができるのですか? – kaylum

+3

私は入門教科書の読み込みに失敗したため、この質問を議論の対象外としています。 – Joshua

+1

私はそれが有効な質問だと思うし、リー・ダニエル・クロッカーの答えを示すように、それは自明ではありません。 –

答えて

4

C++では、 "< <"演算子は "スマート"です。それは左と右のものの型を知っていて、右のものが文字ポインタで左のものが出力ストリームの場合は、ポインタの値ではなく文字列を出力します。

Cでは、 "%p"または "%s"とどちらを処理するかをprintf()に指示する必要がありますが、 "< <"を選択してください。

Google「C++演算子のオーバーロード」