Вывод строк и массивов, сравнение

Почему строки типа char можно выводить командой

cout << str;

а массив нельзя (т.е. нужно выводить каждый элемент массива отдельно). Разве строки это не массив символов?


Ответы (1 шт):

Автор решения: αλεχολυτ

У оператора вывода в поток operator<< есть соответсвующая перегрузка, которая принимает const char* для вывода нуль-терминированной строки. Массив символов неявно преобразуется к данному типу. Нуль-терминированные строки - это давно устоявшийся тип из языка Си.

Для обычных массивов (не символьных) перегрузки, которая принимает указатель на тип - нет. Потому что никто не знает как такие массивы надо выводить, какой разделитель добавлять, например, между элементами и где будет конец такого массива.

→ Ссылка