cout cin

发布时间 2023-05-02 15:27:03作者: 何太狼

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格式化输出(输出格式)完全攻略