2012-04-23 8 views
0

У меня есть массив символов, как это:
ostream соиЬ и символ *

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

Так оператор < < имеет перегруженную версию, которая принимает объект ostream и символ *. так что cout<<arr; первый орг упадет в чат *. а затем оператор < <() распечатает то, что указывает указатель на char, пока не найдет нулевой символ?

Тот же вопрос дляcin>>arr; Как это работает с оператором >>, который принимает массив как второй операнд.

+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

Ваш ostream и istream есть operator<< и operator>> перегруженный взять char* и распад массивов в указатели на первый элемент. Итак, да, он делает то, что вы говорите.

1

Точно так же, как cout работ.

Массив arr распадается на тип указателя, и существует также перегруженная версия istream, которая принимает char* в качестве аргумента. Таким образом, arr передается в operator>> как char* после разложения.

Смежные вопросы