В книге аж целая глава написана про неё. Разве кто-то будет использовать её углублённо? Ведь используя средства ОС + GUI его она вовсе не пригодится, разве что писать системное приложение без GUI, всё равно, зачем там всякие навороты? Ну это так, философия, теперь конкретный вопрос.
При перегрузке операторов << или >> по отношению к объектам cin, cout пишут, мол пусть функция возвращает ссылку на принятый поток (операнд слева). Я понимаю что вызывает операторную функцию левый операнд оператора, но куда возвращает функция ссылку на поток, и зачем это делать (вроде как не обязательно, ну совет же всё таки)?
Здравствуйте, dirtez, Вы писали:
D>В книге аж целая глава написана про неё. Разве кто-то будет использовать её углублённо? Ведь используя средства ОС + GUI его она вовсе не пригодится, разве что писать системное приложение без GUI, всё равно, зачем там всякие навороты? Ну это так, философия, теперь конкретный вопрос.
для логов, формирования строк, преобразования int/float/... в string, текстовых и не только файлов
D>При перегрузке операторов << или >> по отношению к объектам cin, cout пишут, мол пусть функция возвращает ссылку на принятый поток (операнд слева). Я понимаю что вызывает операторную функцию левый операнд оператора, но куда возвращает функция ссылку на поток, и зачем это делать (вроде как не обязательно, ну совет же всё таки)?
нужно чтобы цепочку из этих операторов можно было строить. Т.е.,
(a << "hello") << "world"
т.к. выражение в скобках возвращает ссылку на объект потока, в этот объект можно "вывести" слово "world"
Здравствуйте, dirtez, Вы писали:
D>В книге аж целая глава написана про неё. Разве кто-то будет использовать её углублённо? Ведь используя средства ОС + GUI его она вовсе не пригодится, разве что писать системное приложение без GUI, всё равно, зачем там всякие навороты? Ну это так, философия, теперь конкретный вопрос.
Консольный ввод-вывод используется редко. Но мне вот — нужно, у меня не гуёвые приложения.
А работа с бинарными файлами — вполне на этом API можно базу данных реализовать. И реализуют... D>При перегрузке операторов << или >> по отношению к объектам cin, cout пишут, мол пусть функция возвращает ссылку на принятый поток (операнд слева). Я понимаю что вызывает операторную функцию левый операнд оператора, но куда возвращает функция ссылку на поток, и зачем это делать (вроде как не обязательно, ну совет же всё таки)? D>
Ссылка возвращается для того, чтобы можно было писать многократные аргументы/
Как в стандартный консольный поток:
cout << a << d << endl;
Попробуй без возврата ссылки посмотреть, что получится.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, dirtez, Вы писали:
D>В книге аж целая глава написана про неё. Разве кто-то будет использовать её углублённо? Ведь используя средства ОС + GUI его она вовсе не пригодится, разве что писать системное приложение без GUI, всё равно, зачем там всякие навороты? Ну это так, философия, теперь конкретный вопрос.
D>При перегрузке операторов << или >> по отношению к объектам cin, cout пишут, мол пусть функция возвращает ссылку на принятый поток (операнд слева). Я понимаю что вызывает операторную функцию левый операнд оператора, но куда возвращает функция ссылку на поток, и зачем это делать (вроде как не обязательно, ну совет же всё таки)? D>
Здравствуйте, dirtez, Вы писали:
D>В книге аж целая глава написана про неё. Разве кто-то будет использовать её углублённо? Ведь используя средства ОС + GUI его она вовсе не пригодится, разве что писать системное приложение без GUI, всё равно, зачем там всякие навороты?
ну с помощью стримов много чего делается а не только вывод в консоль... и местами это даже удобно! сериализация, сетевой I/O (boost::asio), boost::iostream "прозрачно" может делать (де)архивацию данных "по дороге" и всякие прочие феньки "на лету"... так что не логами и файлами едиными...
Здравствуйте, dirtez, Вы писали:
D>В книге аж целая глава написана про неё. Разве кто-то будет использовать её углублённо? Ведь используя средства ОС + GUI его она вовсе не пригодится, разве что писать системное приложение без GUI, всё равно, зачем там всякие навороты? Ну это так, философия, теперь конкретный вопрос.
Эта философия называется у-вэй (1)(2).
В никсах даже видеопроигрыватели — это лишь фронтэнд к вполне себе консольному mplayer/mencoder.
D>При перегрузке операторов << или >> по отношению к объектам cin, cout пишут, мол пусть функция возвращает ссылку на принятый поток (операнд слева). Я понимаю что вызывает операторную функцию левый операнд оператора, но куда возвращает функция ссылку на поток, и зачем это делать (вроде как не обязательно, ну совет же всё таки)?
Расставь скобки в твоём же примере, и поймёшь куда она её возвращает: D>
> В книге аж целая глава написана про неё. Разве кто-то будет использовать её > углублённо?
Вообще замечание правильное, в общем, эту подсистему сделали больше по приколу,
чем по необходимости. И применение у неё достаточно ограниченное.
Единственное, что лучше в IO С++ относительно IO С -- это типобезопасность.
IO С++ наверное почти невозможно убить данными не того типа или не тем форматом.
В С -- запросто.
В общем, для применнеия в учебных задачах она незаменима -- она тупа и проста,
если хочешь от неё тупого и простого.