Стандарт C ++ не определяет, как реализованы средства стандартной библиотеки, такие как std::cin
и std::cout
, а только как они должны себя вести. Вызывают ли функции ввода-вывода C ++ свои C аналоги, зависит от реализации.
В качестве примера того, как могут быть реализованы потоки ввода-вывода C ++, мы можем взглянуть на исходный код libstdc ++, это реализация стандартной библиотеки G CC. Функция std::basic_istream& operator>>(int&)
, которая вызывается, когда вы используете std::cin >> x
для чтения int, вызывает некоторые функции, которые вызывают другие функции, и в конечном итоге достигает этой функции _M_extract_int
, которая фактически анализирует целое число. Следовательно, libstdc ++ не реализует оператор извлечения потока для целых чисел, использующих C функции ввода-вывода. Тем не менее, помните, что это только один пример, и реализации других стандартных библиотек могут отличаться.