'cout << …' или 'cout.put(…)'?

355
30 января 2017, 18:12

Что лучше использовать для вывода на консоль символов: 'cout << ...' или 'cout.put(...)'?

Answer 1

Функция-член класса put стандартного класса basic_ostream, объявленная как

basic_ostream<charT,traits>& put(char_type c)

предназначена только для объектов типа char_type, Она не перегружена для объектов других типов. Поэтому, например, чтобы написать эквивалентный вывод данным предложениям

int x = 10;
std::cout << "x = " << x << std::endl;

вам придется писать

int x = 10;
std::cout.put( 'x' ).put( ' ' ).put( '=' ).put( ' ' ) << x << std::endl;

что выглядит очень вычурно.

Внутренне такие функции, как, например, std::endl и std::ends используют функцию put. То есть эта функция считается функцией низшего уровня. В прикладных программах лучше использовать operator << , который перегружен для всех стандартных типов и кроме того может быть перегружен для пользовательских типов. При этом код с использованием этого оператора выглядит более естественным и не вызывает вопросов.

На низшем уровне, например, когда вы реализуете свою функцию более высокого уровня, как, например, тот же самый оператор operator << вы можете использовать функцию put.

READ ALSO
Ускорение разбиения текста c++

Ускорение разбиения текста c++

Требуется разбить большой файл (1 600 000 строк) на строки и сохранить в коллекцию с уникальными значениямиПодгрузка файла происходит на javascript,...

326
Как создать оператор += для Point c++ [требует правки]

Как создать оператор += для Point c++ [требует правки]

Нужно создать такой оператор Point& operator+=(Point &, const Point&)

355
Как создать getter для класса Pont c++ [требует правки]

Как создать getter для класса Pont c++ [требует правки]

Помогите создать getter для класса Point double& x();

333
Программное создание VPN подключения на Windows

Программное создание VPN подключения на Windows

Есть VPN сервер и я к нему подключаюсь по протоколу PPTP или L2TP с помощью стандартных средств виндовс, аля http://skynetcom

324