几个常用的C++头文件

最近在九度OJ刷考研机试题,题目不难,可是有时Judge会提示未包含某些头文件,虽然在本地VS2010可以运行,可是提交后还是会出问题。

常用的几个头文件有iomanip,stdlib,math.h(cmath)等。根据网上相关资料,总结如下:

1.iomanip

 #include <iomanip>

 iomanip的作用比较多,主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制头      文件,就像C里面的格式化输出一样.以下是一些常见的控制函数的:


 dec 置基数为10 相当于"%d"


 hex 置基数为16 相当于"%X"


 oct 置基数为8 相当于"%o"


 setfill(c) 设填充字符为c


 setprecision(n) 设显示小数精度为n位


 setw(n) 设域宽为n个字符


 这个控制符的意思是保证输出宽度为n。如:


 cout<<setw(3)<<1<<setw(3)<<10<<setw(3)<<100; 输出结果为


 1 10100 (默认是右对齐)当输出长度大于3时(<<1000),setw(3)不起作用。


 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) 强制显示符号


 举例:
 

 #include <iostream>


  #include <iomanip>


  using namespace std;


  int main()


  {


  cout<<12345.0<<endl;//输出"12345"


  cout<<setiosflags(ios::fixed)<<setprecision(3)<<1.2345<<endl;输出"1.235"


  cout<<setiosflags(ios::scientific)<<12345.0<<endl;//输出"1.234500e+004 "


  cout<<setprecision(3)<<12345.0<<endl;//输出"1.235e+004 "


  return 0;


  }

2.stdlib

①“类型转换”
atof         把字符串转换为双精度浮点数。相当于strtod(s, (char**)NULL).
atoi         把字符串转换为整型. 相当于(int)strtol(s, (char**)NULL, 10).
atol         把字符串转换为长整型. Equivalente a strtol(s, (char**)NULL, 10).
atoll         把字符串转换为长长整型. Equivalente a strtol(s, (char**)NULL, 10). 这是C99新增加的库函数。
strtod 把字符串转换为双精度浮点数,检查结果是否溢出,并返回字符串不能转换部分的地址.
strtof 把字符串转换为单精度浮点数,检查结果是否溢出,并返回字符串不能转换部分的地址.
strtold 把字符串转换为长双精度浮点数,检查结果是否溢出,并返回字符串不能转换部分的地址.
strtol         把字符串转换为长整型,检查结果是否溢出,并返回字符串不能转换部分的地址.
strtoll 把字符串转换为long long int,检查结果是否溢出,并返回字符串不能转换部分的地址.
strtoul 把字符串转换为无符号长整形,检查结果是否溢出,并返回字符串不能转换部分的地址.
strtoull 把字符串转换为unsigned long long int,检查结果是否溢出,并返回字符串不能转换部分的地址.


②“伪随机数序列生成”
rand         返回在0到RAND_MAX之间的伪随机数.
srand 初始化rand()使用的伪随机数种子.


③“内存分配与释放”
aligned_alloc 边界对齐的动态内存分配.
calloc         数组的动态内存分配,且初始化为全零
malloc         动态内存分配,其内容不初始化
realloc         释放老的动态内存块,按照给出的尺寸分配新的动态内存块,老的内存块的内容尽量复制到新的内存块
free                 系统释放动态分配的内存. 如果是空指针,则无动作发生;如果指针所指不是动态分配的内存块或者是已释放的内存块,则行为是未定义的。


④“进程控制与运行环境的沟通”
abort 导致程序非正常的结束,各种流缓冲区与临时文件直接放弃。实际上抛出raise(SIGABRT),缺省的信号处理行为是使用退出代码3执行终止(terminate)操作。如果SIGABRT被捕捉且信号处理程序不返回,则程序将不终止.


atexit 登记一个函数,当程序使用exit正常退出时被登记的函数自动被调用.


exit         程序正常终止。首先atexit()登记的函数按照登记的逆序被调用;如果多次调用atexit登记了多个函数,按照登记的逆序调用这些函数。如果一个函数被登记了多次,则程序正常退出时该函数也将被调用多次。然后所有缓冲区中的数据被写回(flushed);所有打开着的流被关闭;tmpfile函数创建的文件被删除。最后,控制权返回给调用环境,返回数值表示程序返回时的状态,0表示EXIT_SUCCESS, 1表示EXIT_FAILURE.


at_quick_exit 登记一个函数,当程序使用quick_exit正常退出时被登记的函数自动被调用.
_Exit 程序正常终止, 但atexit(), at_quick_exit(), signal()登记的函数不被调用; 打开的流、文件是否被关闭,由编译器的实现者决定


getenv         获得某一个环境变量的字符串值,如果该环境变量不存在,返回NULL.


quick_exit         程序正常终止, 但atexit(), 登记的函数不被调用; at_quick_exit()登记的函数按登记顺序的逆序被调用。


system         把参数作为外部环境的命令执行。 如果参数为空,则判断外部环境是否有命令解释器。


⑤“搜索与排序”
bsearch 折半搜索.
qsort 快速排序.


⑥“整数算术”
abs, labs, llabs 计算整数的绝对值.
div, ldiv, lldiv 计算整数除法的商与余数.

3.cmath与math.h

math.h是C语言的头文件。 
其实在C++中用math.h也是可以的,C++是兼容C的。 不过推荐的是使用#include <cmath> 。不过这样必须声明在std命名空间:using namespace std; 其中的函数和使用方法几乎完全相同。
<math.h>是兼容C风格的库文件,<cmath>是标准c++库文件
 
它们都是数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有:

三角函数 
  double sin (double); 
  double cos (double); 
  double tan (double); 
反三角函数 
  double asin (double); 结果介于[-PI/2, PI/2] 
  double acos (double); 结果介于[0, PI] 
  double atan (double); 反正切(主值), 结果介于[-PI/2, PI/2] 
  double atan2 (double, double); 反正切(整圆值), 结果介于[-PI/2, PI/2] 
双曲三角函数 
  double sinh (double); 
  double cosh (double); 
  double tanh (double); 
指数与对数 
  double exp (double); 
  double sqrt (double); 
  double log (double); 以e为底的对数 
  double log10 (double); 
  double pow(double x, double y)//计算以x为底数的y次幂 
取整 
  double ceil (double); 取上整 
  double floor (double); 取下整 
绝对值 
  double fabs (double); 
  double cabs(struct complex znum) //求复数的绝对值 
标准化浮点数 
  double frexp (double f, int *p); 标准化浮点数, f = x * 2^p, 已知f求x, p ( x介于[0.5, 1] ) 
  double ldexp (double x, int p); 与frexp相反, 已知x, p求f 
取整与取余 
  double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分 
  double fmod (double, double); 返回两参数相除的余数 
其他 
  double hypot(double x, double y);//已知直角三角形两个直角边长度,求斜边长度 
  double ldexp(double x, int exponent);//计算x*(2的exponent次幂) 
  double poly(double x, int degree, double coeffs [] )//计算多项式 
  nt matherr(struct exception *e)//数学错误计算处理程序 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值