cout.put()建议使用cout<<用于打印字符

时间:2016-06-19 07:55:56

标签: c++

背景

IIRC,来自 Release 2.0 C ++将单字符常量存储为类型char和非int。但在 Release 2.0之前之前的声明

cout<<'A'

是有问题的,因为它显示'A'的ASCII值,即65,而:

char ch='A';
cout<<ch;

会显示正确的值,即'A'。

由于问题已在 Release 2.0 中得到纠正。我相信cout.put()失去了优于cout<<的优势。

问题

是否有其他理由推荐cout.put()超过cout<<打印字符?

1 个答案:

答案 0 :(得分:6)

cout<<cout.put之间存在一些差异,或者我们应该从<<说出重载的put运算符和std::basic_ostream方法,因为这是并不仅限于全局实例:cout

<<运算符写入格式化输出,put方法不写。

如果输出失败,<<运算符会设置failbit,而put方法则不会。

我个人会在几乎所有情况下都使用<<运算符,除非我有特殊需要绕过格式化输出或不设置出错的failbit。

使用它们会导致以下输出差异:

#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没有设置的情况,甚至可能更为重要。