标准输入流(cin)
预定义的对象 cin 是 iostream 类的一个实例。cin 对象附属到标准输入设备,通常是键盘。cin 是与流提取运算符 >> 结合使用的,流提取运算符 >> 在一个语句中可以多次使用。
#include <iostream>
cin >> a >> b;
C++ 编译器根据要输入值的数据类型,选择合适的流提取运算符来提取值,并把它存储在给定的变量中。
cin在遇到结束符(Space、Tab、Enter)就结束,且对于结束符,并不保存到变量中
cin.get()
cin.get()与C语言中getchar()等价,get() 函数不会跳过空格、制表符、回车等特殊字符,所有的字符都能被读入
int c;
while ((c = cin.get()) != EOF)
cout.put(c);
cin.getline()
cin.getline()可以读入一行字符串(整行数据)
可以通过getline和split实现字符串分割
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
stringstream ssin(s);
string temp;
vector<string> strs;
//此处用getline时要注意最后一个回车的问题
while(getline(ssin,temp,',')) strs.push_back(temp);
//此处也可以用stringstream流的性质直接读取字符串,不用getline
//while(ssin>>temp) strs.push_back(temp);
for(int i=0;i<strs.size();i++) cout<<strs[i]<<" ";
return 0;
}
标准输出流(cout)
预定义的对象 cout 是 iostream 类的一个实例。cout 对象"连接"到标准输出设备,通常是显示屏。cout 是与流插入运算符 << 结合使用的,流插入运算符 << 在一个语句中可以多次使用,endl 用于在行末添加一个换行符。
C++ 编译器根据要输出变量的数据类型,选择合适的流插入运算符来显示值。<< 运算符被重载来输出内置类型(整型、浮点型、double 型、字符串和指针)的数据项。
#include <iostream>
cout << a << " " << endl;
setw
设置字段宽度,效果类似于 %5d
#include<iomanip>
cout << setw(5) << 123 << endl;
cout << setw(5) << 45<< endl;
cout << setw(5) << 123456 << endl;
输出
123
45
123456
输出长度小于设置时,靠右对齐,前面为空格;输出长度大于设置时,设置失效。
left/right
设置输出对齐方式,与setw()搭配使用
cout << setw(5) << left << 123 << endl;
cout << setw(5) << 123 << endl;
cout << setw(5) << right << 123 << endl
输出
123
123
123
setfill
将空格填充为特定的字符,与setw配合使用
要注意的是:首先填充的必须是字符,char类型。
cout << setw(5) << left << setfill('-') << 123 << endl;
cout << setw(5) << setfill('-') << 1.5 << endl;
123--
1.5--
fixed
fixed指的是:流的格式化,将一个浮点数表示为,一个定点整数和小数点和小数部分的格式
fixed只改变double或float的输出格式,对int无效
double a = 123.456;
cout << a << endl;
cout << fixed << a << endl;
cout << a << endl;
输出
123.456
123.456000
123.456000
setprecision
setprecision()函数的意思是,保留多少位有效数字
例如123.456如果保留5位有效数字的话,就变成了:123.46,进行四舍五入。
如果想保留的是小数,例如把123.456变成123.456000,就要用fixed与setprecision向结合的方式
如果不加fixed,就是有效数字;如果加了fixed,就是保留小数
double a = 123.456;
cout << setprecision(5) << a << endl;
cout << fixed << setprecision(5) << a << endl;
cout << resetiosflags(ios::fixed) << setprecision(5) << a << endl;
123.46
123.45600
123.46
第三行是将其改变回来正常的输出
hex/dec/oct
hex是十六进制,dec是十进制,oct是八进制
int b = 55;
cout << b << endl;
cout << hex << b << endl;
cout << b << endl;
cout << oct << b << endl;
cout << dec;
cout << b << endl;
输出
55
37
37
67
55
切记:对cout做的设置都需要更改回来,不然会一直保持更改后的状态
scanf()和printf()
C++也可以沿用C语言中的scanf()和printf()函数进行输入输出,规则相同