Вывод строк и массивов, сравнение
Почему строки типа char можно выводить командой
cout << str;
а массив нельзя (т.е. нужно выводить каждый элемент массива отдельно). Разве строки это не массив символов?
Ответы (1 шт):
У оператора вывода в поток operator<< есть соответсвующая перегрузка, которая принимает const char* для вывода нуль-терминированной строки. Массив символов неявно преобразуется к данному типу. Нуль-терминированные строки - это давно устоявшийся тип из языка Си.
Для обычных массивов (не символьных) перегрузки, которая принимает указатель на тип - нет. Потому что никто не знает как такие массивы надо выводить, какой разделитель добавлять, например, между элементами и где будет конец такого массива.