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

Программисты С/С++, объясните есть ли отличия в операторах ввода/вывода (cin/cout от printf/scanf)

cin и cout это стандартные потоки ввода вывода, которые используются при написании программ на С++ для ввода вывода информации

printf и scanf это функции, которые служат для ввода/вывода на консоль в программах на языке С.
Так как С++ поддерживает С (в большинстве случаев) , то и поддерживает эти функции, но лучше в программах на С++ их не использовать
Владимир Клименко
Владимир Клименко
2 507
Лучший ответ
Александр Тимченко это я понимаю, а вот какой лучше, какой? как бы так сказать "сильнее" чтоли.
Александр Тимченко setprecision - надо запомнить, спасибо)
Отличия есть и чтобы их описать не хватит рабочего дня.
В кратце:
- 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);
Александр Тимченко да синтаксис меня не очень пугает , я уже привык ))