背景
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<<
打印字符?
答案 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
没有设置的情况,甚至可能更为重要。