cin
istream类,定在文件为iostream头文件,为以下数据类型重载了>>抽取操作符,所重载的函数称为格式化输入函数。 signed char &、unsigned char &、char &、short &、unsigned short &、int &、unsigned int &、long &、unsigned long &、long long & (C++11)、unsigned long long & (C++11)、float &、double &、long double & 成员函数原型为:
istream & operator>>(type &);//type为以上数据类型
//这些函数被称为格式化输入函数,函数可以将输入的字符串转换为type格式
cin检查输入可以被放在循环条件中来终止循环。需要注意的是,循环终止后不再允许用户输入,即使调用cin>>也没用;如需要用户输入,则需要设置标识符为有效才可。
cin.clear(); // reset input设置标志位为有效
对于如下输入:
123ewdwede
如果读入格式为:
int x;
string ch;
cin >> x >> ch;
cout << x << " " << ch;
仍然可以正常输出
cout格式化输出
使用流操作算子
C++常用的输出流操作算子如下图所示,它们都是在头文件iomanip
中定义的;要使用这些流操作算子,必须包含该头文件。
流操作算子 | 作用 |
---|---|
dec | 以十进制形式输出整数(默认以这种方式) |
hex | 以十六进制形式输出整数 |
oct | 以八进制形式输出整数 |
fixed | 以普通小数形式输出浮点数 |
scientific | 以科学计数法形式输出浮点数 |
left | 左对齐,即在宽度不足时将填充字符添加到右边 |
right | 右对齐,即在宽度不足时将填充字符添加到左边(默认以这种方式) |
setbase(b) | setbase(b) |
setw(w) | setw(w) |
setfill(c) | setfill(c) |
setprecision(n) | 设置输出浮点数的精度为 n。 在使用非 fixed 且非 scientific 方式输出的情况下,n 即为有效数字最多的位数,如果有效数字位数超过 n,则小数部分四舍五人,或自动变为科学计 数法输出并保留一共 n 位有效数字。 在使用 fixed 方式和 scientific 方式输出的情况下,n 是小数点后面应保留的位数。 |
示例
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double pi = 3.1415926;
cout << pi << endl;
cout << fixed << setprecision(7) << pi << endl;
cout << setprecision(10) << pi << endl;
cout << setfill('*') << setw(15) << pi << endl;
return 0;
}
需要注意的是,setw() 算子所起的作用是一次性的,即只影响下一次输出。每次需要指定输出宽度时都要使用 setw()。
在读入字符串时,setw() 还能影响 cin 的行为。例如下面的程序:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
string s1, s2;
cin >> setw(3) >> s1 >> setw(3) >> s2;
cout << s1 << ", " << s2 << endl;
return 0;
}
参考博客
C++ cin的使用,看这一篇就够了
C++ cout格式化输出(输出格式)完全攻略