C/C++

Почему в С++ в отличии от других языков команда ввода-вывода использует << вместо стандартных ();?

ввода-вывода? введи что-нибудь через >>

ответ:

потому же, почему char, int или массивы в C++ не являются классами, а являются атомарными типами (тогда как во многих языках можно сделать именно arr.length(), а не length(arr))

чтобы было () - нужно либо тупо сделать функцию print() (но это тупо по тому, что тогда в других местах, например при работе с файлами, будет уже что-то другое) либо сделать общий базовый класс stream и от него классов-наследников: для файлов (fstream, затем ifstream/ofstream), для консоли (cin, cout), для хранения в памяти (stringstream), для сетей и т. д.

в принципе можно было так сделать, но C++ все же достаточно минималистичный и заточенный под абсолютную гибкость, а такой класс хоть чуток, но ограничивает и вроде как не везде будет пригоден, где-то кому-то придется делать велосипед, а не наследовать свой поток ввода-вывода от stream. и тогда он не будет совместим со стандартными. поэтому не стали делать класс с методом, а сделали оператор.
Андрей Гольцов
Андрей Гольцов
568
Лучший ответ
Вы будете смеяться, но в С++ это называется СТАНДАРТНЫМ вводом/выводом.
Отродясь () не было стандартным для других языков. Например, в Бейсике PRINT a,b, а в Фортране print *,a,b
Иван Новоселов [еще_был например: ObjectiveC суть: Apple_хотел_даже_СPP_не_как_у_всех]

[да_и_сейчас_есть даже_под: iOS13]
1 - это не команда, а операторы.
2 - если в C++ есть операторы и перегрузка и есть операторы << и >> разве не клёво указывать направление откуда куда?
3 - можете их перегрузить, можете использовать функции - никто не мешает.
Ну как-то так.

ЗЫЖ Убрал у себя момент про стандарт, т. к. Николай написал быстрее, чем я стал обновлять ответ по этому-же поводу =)
Скобки ( ) это вызов функции, а не ввод-вывод. Да, в большинстве популярных языков вызов функции обозначается скобками. Но есть языки, в которых функции вызываются без использования скобок.
Операторы << >> используются в C++ для ввода-вывода, потому что так захотелось авторам библиотеки iostream (возможно, это не автор языка C++ Б. Страуструп).
потому что это коротко и просто
// c++
cin >> x >> y >> z ;/ ввести в переменные различные значение
// обработать по надобности
cout << x << " " << y << " " << z ; << endl; // и вывести результат
>> ...команда ввода-вывода ...
Ты что то выдумал.
В с++ нет команды ввода-вывода.

">>" - в с++ является оператором.
Как и почти любой другой оператор его можно перегрузить и в назначенной функции с операндами можно выполнять любые манипуляции. Хоть картошку чистить через подключенную ардуинку
А почему тебя зовут Санек, а не как других - Сергей, Михаил и так далее?
ПОТОМУ ЧТО ТАК НАЗВАЛИ. Вот так захотел автор.
Ну или, говоря проще, потому что гладиолус!
Ivan Cudorans
Ivan Cudorans
10 661
Николай Руденко Ясно гладиолус так гладиулус. Я думал тут особые скрытые философские размышления автора между символами, а оно вот как.
Александр Захаров Да потому что направление значения в поток ввода-вывода очень логично обозначить стрелками. Куда логичнее, чем скобками, а C++, в отличие от С, это мог.
Это перегруженные операторы, они символизируют потоки ввода и вывода/файлового считывания и записи
Karush Gh
Karush Gh
7 902
ну так-то там и printf есть с пресловутыми круглыми скобками
а оператор битового сдвига используется для записи/чтения из файла (в том числе для файлов ввода/вывода)
Так сложилось.
Сделали так.
ZM
Zhenya Mudrov
276