前言
在开发过程中常需要带各种头文件,但是作为初学者我们常存在困惑,要实现各类功能时我们需要带什么头文件呢,本文将对头文件的功能及用法进行详细介绍。
输入/输出库
iostream
头文件
iostream
包含了<ios>、<istream>、<ostream>、<streambuf>
四个头文件,能够通过以下关键词实现对应功能:
对象 | 功能 |
---|---|
cin | 标准输入 |
cout | 标准输出 |
cerr | 标准错误 |
clog | 标准日志 |
wcin | 标准输入 |
wcout | 标准输入 |
wcerr | 标准错误 |
wclog | 标准日志 |
大家一定奇怪cin和wcin的区别,区别在于cin 表示“字符输入”而 wcin 表示“宽字符输入“。宽字符是用多个字节来代表的字符。
另一方面由于调用和功能均类似,cout、cerr和clog的区别也令人困惑。那么其区别在哪呢?cout的输出可以重定向到一个文件中,而cerr和clog必须输出在显示器上。而cerr和clog的区别在于cerr不经过缓冲区,而clog中的信息存放在缓冲区,缓冲区满或者遇到endl时才输出。cerr和clog存在的意义是为了在你最需要它的紧急情况下,还能得到输出功能的支持。所以并不是输出报错信息和运行日志,而是输出字符。
在程序中调用为:
#include <iostream>
using namespace std;
int main(){
string TestName;
cin>>TestName;
cout<<TestName<<endl;
clog<<TestName<<endl;
cerr<<TestName<<endl;
return 0;
}
iomanip头文件
iomanip头文件是用以控制输入输出文本格式的辅助函数。能够通过关键词实现对应功能:
对象 | 功能 |
---|---|
resetiosflags | 重置的ios_base标志 |
setiosflags | 设置指定的ios_base标志 |
setbase | 更改用于整数I/O的基数 |
setfill | 更改填充字符 |
setprecision | 更改浮点精度 |
setw | 更改下个输入/输出域的宽度 |
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
// setioflags(ios::fixed) 固定的浮点显示
// setioflags(ios::scientific) 指数表示
// setiosflags(ios::left) 左对齐
// setiosflags(ios::right) 右对齐
// setiosflags(ios::skipws 忽略前导空白
// setiosflags(ios::uppercase) 16进制数大写输出
// setiosflags(ios::lowercase) 16进制小写输出
// setiosflags(ios::showpoint) 强制显示小数点
// setiosflags(ios::showpos) 强制显示符号
cout<<setbase(8)<<15<<endl;// setbase(8)以八进制输出数字,同理setbase(10)、setbase(16)为以十进制、十六进制输出数字
cout<<'s'<<setw(8)<<'a'<<endl;// setw(n) 设域宽为n个字符
cout<<'s'<<setfill('*')<<setw(8)<<'a'<<endl;// setw()默认填充的内容为空格,可以setfill()配合使用设置其他字符填充。
cout<<setiosflags(ios::fixed)<<setprecision(3)<<1.2345<<endl;// setprecision(n) 设显示小数精度为n位
return 0;
}