Отличие scanf/printf от cin/cout в С++

124
07 октября 2019, 05:00

В чём основное отличие этих способов ввода/вывода? Можно ли в C++ использовать спокойно функции scanf/printf или есть какие-то подводные камни?

Answer 1

scanf и printf это наследие C, они входят в стандартную библиотеку C, которая полностью поддерживается С++ (хотя сейчас эти языки расходятся). Потоки (cin и cout) это стандартная (и более новая) библиотека C++. Можно использовать любую библиотеку, или даже обе сразу. Однако как замечено в комментариях, для доступа к одному и тому же стандартному потоку (stdin/stdout) лучше использовать что-то одно, иначе могут быть проблемы с синхронизацией.

Хотя функции ввода/вывода C более старые, они помощнее, да и поудобнее. Так что в маленьких (особенно учебных) программах чаще используются потоки, а в больших коммерческих чаще можно видеть функции C. Это по личному впечатлению, конечно, вряд ли тут есть достоверная статистика.

READ ALSO
GetHBITMAP утечка памяти

GetHBITMAP утечка памяти

Почему здесь происходит утечка памяти?

109
main.cpp:10:24: error: cannot convert ‘’ to ‘std::string** {aka std::basic_string**}’ in assignment [закрыт]

main.cpp:10:24: error: cannot convert ‘’ to ‘std::string** {aka std::basic_string**}’ in assignment [закрыт]

Указатели - это не массивыНельзя просто положить набор элементов "в указатель" - сначала вам нужно выделить память через new

144
Как в CMAKE добавить параметр -fvisibility=default?

Как в CMAKE добавить параметр -fvisibility=default?

Пытаюсь собрать qtwebkit из исходников и получить доступ к WebCoreТ

117
Boost Asio. Очередь обработчиков

Boost Asio. Очередь обработчиков

Есть, например, этот код:

129