C++ 输入输出流之标准I/O

1. C++输入输入输出包括:

  • 标准I/O:对系统指定的标准设备的输入和输出。比如键盘输入数据,输出到显示屏幕
  • 文件I/O:以外存磁盘文件为对象进行输入和输出。例如从磁盘文件输入数据,数据输出到磁盘文件。
  • 字符串I/O:对内存中指定的空间进行输入和输出。

2. I/O类库中的常用流类
    

3. iostream类库的即可分别由不同的头文件来实现:

  • iostream:包含了对输入输出流进行操作所需的基本信息
  • fstream:用于用户管理的文件的I/O操作
  • strstream:用于字符串流I/O
  • stdiostream:用于混合使用C和C++的I/O机制时,例如想将C程序转变为C++程序
  • iomanip:在使用格式化I/O时应包含此文件

4. 标准输出流

  • cout 流对象:cout是console output的缩写,意为在控制台(终端显示器)的输出。可以传送到显示器输出,也可以重定向到磁盘文件
  • cerr 流对象:标准错误流,只能在显示器输出,不经过缓冲区
  • clog 流对象:在终端显示器显示错误信息。clog中的信息存放在缓冲区,缓冲区满后或者遇endl时向显示器输出。

5 格式输出 (iomanip)

5.1 使用控制符控制输入格式 (使用 cout << dec << )

控制符 作用
dec 设置整数的基数为10
hex 设置整数的基数为16
oct 设置 整数的基数为8
setbase(n) 设置整数的基数为n(n只能是16,10,8之一)
setfill(c) 设置填充字符c,c可以是字符常量或字符变量
setprecision(n) 设置实数的精度为n位。在以一般十进制小数形式输出时,n代表有效数字。在以fixed(固定小数位 数)形式和scientific(指数)形式输出时,n为小数位数。默认为6.
setw(n) 设置字段宽度为n位。
setiosflags(ios::fixed) 设置浮点数以固定的小数位数显示。
setiosflags(ios::scientific) 设置浮点数以科学计数法(即指数形式)显示。
setiosflags(ios::left) 输出数据左对齐。
setiosflags(ios::right) 输出数据右对齐。
setiosflags(ios::shipws) 忽略前导的空格。
setiosflags(ios::uppercase) 在以科学计数法输出E和十六进制输出字母X时,以大写表示。
setiosflags(ios::showpos) 输出正数时,给出“+”号。
resetiosflags() 终止已设置的输出格式状态,在括号中应指定内容。

  • 备注1:dec,hex,oct只能选一个,默认是dec。(设置只对当前有效)
  • 使用控制符setiosflags()设置输出格式后,如果想设置为同组的另一种状态,需要先调用resetiosflags()终止原来的设置之后再重新设置。

 5.2 用于控制输出格式的流成员函数 (使用cout.function)

流成员函数 与之作用相同的控制符 作用
precision(n) setprecision(n) 设置实 数的精度为n位。
width(n) setw(n) 设置字段宽度为n位。
fill(c) setfill(c) 设置填充字符c。
setf( ) setiosflags( ) 设置输出格式状态,括号中应给出格式状态,内容与控制符setiosflags括号中内容相同。
unsetf( ) (与setf搭配使用) resetiosflags( ) 终止已设置的输出格式状态。

5.3. 设置格式状态的格式标志

格式标志 作用
ios::left 输出数据在本域宽范 围内左对齐
ios::right 输出数据在本域宽范围内右对齐
ios::internal 数值的符号位在域宽内左对齐,数值右对齐,中间由填充字符填充
ios::dec 设置整数的基数为10
ios::oct 设置整数的基数为8
ios::hex 设置整数的基数为16
ios::showbase 强制输出整数的基数(八进制以0打头,十六进制以0x打头)
ios::showpoint 强制输出浮点数的小点和尾数0
ios::uppercase 在以科学计数法输出E和十六进制输出字母X时,以大写表示
ios::showpos 输出正数时,给出“+”号。
ios::scientific 设置浮点数以科学计数法(即指数形式)显示
ios::fixed 设置浮点数以固定的小数位数显示
ios::unitbuf 每次输出后刷新所有流
ios::stdio 每次输出后清除 stdout,stderr

  • 备注1:需要设置输出指定的宽度,必须每次设置width()或者setw()
  • 使用setf()设置了某种状态,如果需要改变,需要先使用unsetf终止原来的设置,然后再重新设置。

6. 输出流成员函数put:输出单个字符。例如cout.put(65); // 输出'A',功能同putchar(65)一样。

7. 标准输入流

  • cin流:
    • Ctrl+Z表示文件结束符。
    • if (!cin) cout << "error"; 或者while (cin>>num) //判断流对象是否处于正常状态和提取操作是否成功。
    • "cin>>"从输入流提取数据,遇到空格或者回车就终止。
  • 用于字符串输入的流成员函数get
    • char ch;
    • 不带参数的get函数:ch = cin.get(); (cin.get() == EOF文件结束符)
    • 带一个参数的get函数:cin.get(ch);
    • 有3个参数的get函数:cin.get(字符串数组/字符串指针,字符个数n,终止字符)
      • 终止字符默认为'\n'
      • 读取n-1个字符,最后一位为'\0'
      • 如果在读取n-1个字符之前遇到终止符,则提前结束读取。cin.get停在终止符的原位置
  • 用成员函数getline函数读取一行字符:cin.getline(字符串数组/字符串指针,字符个数n,终止标志字符)
    • 终止字符默认为'\n'。
    • (终止字符未被读入,下一个getline从终止标志的下一个字符开始接着读入)

8. istream类的其他函数

  • eof:
    • 调用形式cin.eof()。
    • 数值为非零表示真,反之为0标示假(^Z)。
  • peek:
    • 调用形式ch=cin.peek()。
    • 观察下一个字符,指针停留在当前位置。
  • putback:
    • 调用形式cin.putback(ch)。
    • 将前面用get或者getline函数从输入流读入的字符ch返回到输入流,插入当前指针位置。
  • ignore:
    • 调用方式cin.ignore(n, 终止字符),
    • 默认cin.ignore(),n为1,终止符默认为EOF。跳过输入流中的n个字符,或者遇到指定终止字符时提前结束。
参考文章: 输入输出流(一)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值