Есть несколько различий между cout<<
и cout.put
, или мы должны сказать перегруженный <<
оператора и put
метода из std::basic_ostream
, потому что это на самом деле не ограничиваются глобальным экземпляром: cout
.
Оператор <<
пишет форматированный выход, метод put
этого не делает.
Оператор <<
устанавливает сбои в случае сбоя выхода, метод put
не использует.
Лично я хотел бы обратиться к оператору <<
практически во всех случаях, если у меня не было особых требований обходить форматированный выход или не устанавливать ошибку при ошибке.
С их помощью можно привести следующие отличия выхода:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
cout << "Character: '" << setw(10) << 'A' << setw(0) << "'" << endl;
cout << "Character: '" << setw(10);
cout.put('A');
cout << setw(0) << "'" << endl;
return 0;
}
Выходы:
Character: ' A'
Character: 'A'
Смотрите выше в действии: http://ideone.com/9N0VYn
Поскольку метод put
не отформатирован это делает не соблюдайте набор манипуляторов, могут быть ситуации, когда это действительно то, что вы намереваетесь. Но поскольку похоже, что вы хотите распечатать персонажа, я бы предпочел оператор <<
, который уважает форматирование.
И тогда есть случай failbit
, который не устанавливается, и это может быть даже более важным.
Нет «C++ 2.0».Также '' A'' всегда был 'char', я не знаю, какой компилятор вы используете, но если у вас возникли проблемы с чем-то подобным, он должен быть древним и полностью устаревшим ... –
@ RaphaelMiedl : Да, есть. Сейчас около 27 лет. –
@ BenjaminLindley, который является предварительным. поэтому мы говорим о конкретной реализации, которая полностью устарела? Точно так же некоторые люди называют «Turbo C++ 3.1» просто «C++ 3.1»? –