C++中cin、cout的一些特殊用法

进制转换

cout默认以十进制的格式输出整数

int a = 042;
cout << a << endl;
//输出结果是34

如果想要cout以八进制或十六进制格式输出整数,需要在输出之前额外执行一条语句

int a = 42;
cout << oct;
cout << a << endl;
cout << hex;
cout << a <

八进制和十六进制还可以用来输出其对应的转义字符

cout << '\077' << endl; // ?
cout << '\x3f' << endl; // ?
cout << "\042 and \x3f\n"; // " and ?

cin、cout的实质

cin和cout本质上分别是istream类和ostream类的对象,这也是为什么要使用头文件的原因。
它们所对应的<<和>>的使用,称作操作符重载,因此,他们可以读取或输出多种类型的值。
此外。它们还具有类的成员函数,如cout.put()、cin.get()、cin.getline()

// cout.put()输出一个字符
cout.put('$');

输出指定长度的浮点数

ostream类的setf()方法迫使输出使用定点表示法,防止程序把较大的值切换为E表示法,并使程序显示到小数点后6位小数。参数ios_base::fixed和ios_base::floatfield是iostream中提供的常量。

using namespace std;
cout.setf(ios_base::fixed, ios_base::floatfield);
float tub = 10.0 / 3.0;
double mint = 10.0 / 3.0;
const float million = 1.0e6;
cout << tub << endl; // 3.333333
cout << million * tub << endl; // 3333333.250000
cout << 10 * million * tub << endl; // 33333332.000000
cout << mint << endl; // 3.333333
cout << million * mint << endl; // 3333333.333333

从中也可以看出float型浮点数有效位数比double类型的有效位数少。

调用cin、cout的结果

cin << "dog";
cin.get();
cout << "cat\n";
// 上述调用的结果仍然是一个cin或cout对象,因此可以连续调用
char Mystr[10];
cin.get().get(Mystr, 10);
cout << "cat" << endl;

你可能感兴趣的:(C++中cin、cout的一些特殊用法)