cin и cout это стандартные потоки ввода вывода, которые используются при написании программ на С++ для ввода вывода информации
printf и scanf это функции, которые служат для ввода/вывода на консоль в программах на языке С.
Так как С++ поддерживает С (в большинстве случаев) , то и поддерживает эти функции, но лучше в программах на С++ их не использовать
Другие языки программирования и технологии
Программисты С/С++, объясните есть ли отличия в операторах ввода/вывода (cin/cout от printf/scanf)
Александр Тимченко
это я понимаю, а вот какой лучше, какой? как бы так сказать "сильнее" чтоли.
Александр Тимченко
setprecision - надо запомнить, спасибо)
Отличия есть и чтобы их описать не хватит рабочего дня.
В кратце:
- cin, cout, cerr - ОБЪЕКТЫ. а printf, scanf - функции
- printf, scanf атомарно работают в многопоточном приложении, а cin, cout cerr - нет.
- printf, scanf подвержены ошибке неправильного формата аргументов, что чревато труднообнаружимым сегфолтом. cin, cout - нет.
- можно перегрузить ввод-вывод для своей структуры данных и использовать одинаковый синтаксис для ввода-вывода с cin и cout... В printf и scanf поддерживаются только встроенные типы.
Итог: cin и cout выглядят красиво и современно, но сделаны внутри криво и косо.
printf и scanf выглядят устаревшими, но как правило, их использование не вызывает больших проблем или неудобств.
В кратце:
- cin, cout, cerr - ОБЪЕКТЫ. а printf, scanf - функции
- printf, scanf атомарно работают в многопоточном приложении, а cin, cout cerr - нет.
- printf, scanf подвержены ошибке неправильного формата аргументов, что чревато труднообнаружимым сегфолтом. cin, cout - нет.
- можно перегрузить ввод-вывод для своей структуры данных и использовать одинаковый синтаксис для ввода-вывода с cin и cout... В printf и scanf поддерживаются только встроенные типы.
Итог: cin и cout выглядят красиво и современно, но сделаны внутри криво и косо.
printf и scanf выглядят устаревшими, но как правило, их использование не вызывает больших проблем или неудобств.
Александр Тимченко
извиняюсь, а что за cerr ?
глобальный вопрос.. . конечно есть, в двух словах не объяснишь, cin\сout ориентируются на потоки данных и это свойственно C++, printf - это обычный си, совсем разный синтаксис и поведение, потоки умеет "умно" работать с разными типами данных, а вот основная проблема printf
char * s = "bla-bla-ba";
int num = 10;
printf("%s %d", num, str);
char * s = "bla-bla-ba";
int num = 10;
printf("%s %d", num, str);
Александр Тимченко
да синтаксис меня не очень пугает , я уже привык ))
Похожие вопросы
- Почему операторы printf, scanf работают быстрее cin cout в С++??
- С++ cin cout. Не работает программа.
- Оператор ввода в C#
- C++: файловый ввод-вывод.
- C# средства ввода-вывода, графика
- В чем разница между форматированным вводом/выводом и не форматированным?
- Ввод вывод на Ассемблере
- Как работают устройства ввода-вывода или как вывести пиксель на экран, не задействуя WinAPI и пр.?
- Что значит "ошибка ввода-вывода на устройстве"? При попытке скинуть с карты
- C++ кто может по простому объяснить куда и что вовращает оператор RETURN?