Основное достоинство (единственное? ) (по сравнению со стандартным scanf) - не требует форматной строки, а значит - нет риска ошибиться при описании полей ввода и запороть память, как в scanf.
Второе достоинство (если это достоинство) - возможность определять операторы ввода-вывода >> или << для пользовательских типов. scanf умеет только встроенные. Через это можно писать шаблонный код, который будет работать с любыми типами, для которых эти операторы перегружены. Пример: ostream_iterator и istream_iterator из STL.
Недостатки:
- Не возвращает код ошибки, так что весьма нетривиально узнать - успешно ли прошла последняя операция чтения. Вместо этого нужно извернуться ужом и заставить поток в случае ошибки бросать исключения. Результат: простой и понятный локальный код становится трехэтажным, запутанным и размазанным по проекту. Уроды.
- Вся библиотека iostream плохо дружит с многопоточными программами. stdio проще и надежнее.
- Форматирование с помощью манипуляторов из iomanip - уродское. Того, кто его придумал казнить самой страшной казнью.
Другие языки программирования и технологии
Особенности и недостатки в работе оператора cin>>
минус я думаю в отсутсвии форматирования, Функции более выгодные в этом плане, но оператор >> и << можно использовать для передачи на/ из любой другой поток, например принтер, и др устройства (тоже по сути файлы) и файлы на носителях информации
Если рассматривать такой фрагмент кода
int A = 0;
cin >> A;
Любое значение введенное пользователем будет иметь десятичный вид, в том числе и строка вроде "Andrew" - если не ошибаюсь, запишет в переменную А размер строки, но не значение Andrew. Здесь нету проверки на ввод - к какому типу он принадлежит. Можно использовать функцию getLine() из той же библиотеки - чтобы контролировать ввод. Либо функции библиотеки ffsream - они тоже дополняют оператор >> . Его особенности - думаю это простейший оператор ввода, легко расширяемый.
Посетите эту ссылку, там более подробно, но на английском.
int A = 0;
cin >> A;
Любое значение введенное пользователем будет иметь десятичный вид, в том числе и строка вроде "Andrew" - если не ошибаюсь, запишет в переменную А размер строки, но не значение Andrew. Здесь нету проверки на ввод - к какому типу он принадлежит. Можно использовать функцию getLine() из той же библиотеки - чтобы контролировать ввод. Либо функции библиотеки ffsream - они тоже дополняют оператор >> . Его особенности - думаю это простейший оператор ввода, легко расширяемый.
Посетите эту ссылку, там более подробно, но на английском.
много денег на перед просит и ничего не делает вот его особенности)
Похожие вопросы
- Какие недостатки у Windows Media Player? Помимо того, что не хочет открывать FLV и артачится при воспроизведении >>>>
- Почему не работают операторы cin и cout в visual studio 8.Пример программы дальше
- Нужна критика. Работа внутри >>
- Что делает оператор p = a[ N>>1 ]; в C++?
- чем работа программиста хуже и лучше работы оператором в call центре какого нибудь магазина ?
- <<<<<<<<<<<<html>>>>>>>>>>>>...
- Программисты помогите>>>
- Хочу стать программистом! Пожалуйста, ответьте на несколько вопросов (см. внутри-->>>>>>>
- Всем привет помогите снести windows 8 >>>>
- Профессионалы, поделитесь своим мнением по поводу >>