Другие языки программирования и технологии

Особенности и недостатки в работе оператора cin>>

Основное достоинство (единственное? ) (по сравнению со стандартным scanf) - не требует форматной строки, а значит - нет риска ошибиться при описании полей ввода и запороть память, как в scanf.
Второе достоинство (если это достоинство) - возможность определять операторы ввода-вывода >> или << для пользовательских типов. scanf умеет только встроенные. Через это можно писать шаблонный код, который будет работать с любыми типами, для которых эти операторы перегружены. Пример: ostream_iterator и istream_iterator из STL.
Недостатки:
- Не возвращает код ошибки, так что весьма нетривиально узнать - успешно ли прошла последняя операция чтения. Вместо этого нужно извернуться ужом и заставить поток в случае ошибки бросать исключения. Результат: простой и понятный локальный код становится трехэтажным, запутанным и размазанным по проекту. Уроды.
- Вся библиотека iostream плохо дружит с многопоточными программами. stdio проще и надежнее.
- Форматирование с помощью манипуляторов из iomanip - уродское. Того, кто его придумал казнить самой страшной казнью.
Никита Кобанов
Никита Кобанов
84 349
Лучший ответ
минус я думаю в отсутсвии форматирования, Функции более выгодные в этом плане, но оператор >> и << можно использовать для передачи на/ из любой другой поток, например принтер, и др устройства (тоже по сути файлы) и файлы на носителях информации
Если рассматривать такой фрагмент кода

int A = 0;
cin >> A;

Любое значение введенное пользователем будет иметь десятичный вид, в том числе и строка вроде "Andrew" - если не ошибаюсь, запишет в переменную А размер строки, но не значение Andrew. Здесь нету проверки на ввод - к какому типу он принадлежит. Можно использовать функцию getLine() из той же библиотеки - чтобы контролировать ввод. Либо функции библиотеки ffsream - они тоже дополняют оператор >> . Его особенности - думаю это простейший оператор ввода, легко расширяемый.
Посетите эту ссылку, там более подробно, но на английском.
Миша //////////
Миша //////////
744
много денег на перед просит и ничего не делает вот его особенности)