c++ IO 类主要分三种
博文参考: http://www.cnblogs.com/yxnchinahlj/archive/2011/02/12/1952546.html
输入: 从设备 (文件)--> 缓冲区 -->内存
输出: 内存 -->缓冲区 -->设备(文件)
1, 对应标准输入输出(控制台) istream,ostream,iostream 头文件 include<iostream>
2, 对应文件输入输出 ifstream,ofstream,fstream 头文件 include<fstream>
3, 对应字符串输入输出 istringstream,ostringstream,stringstream 头文件 include<sstream>
istream,ostream,osstream 类
1, 典型对象 cin
(1),cin>> 操作符是根据后面变量的类型读取数据.
输入结束条件: 遇到 Enter,Space,Tab 键.
对结束符的处理 : 丢弃缓冲区中使得输入结束的结束符(Enter,Space,Tab)
a, 读字符时, 输入多个字符则只读取一个字符. 其他字符继续留在缓冲区.
- char a,b;
- cin>> a;
- cin>> b;
输入 qewr 回车 //a<--q,b<--e
如果类型不匹配则 cin 出错. 如 cin>> intVal, 输入'a', 则 cin 出错
- int i;
- cin>> i;
输入: a 回车 // 流出错
b, 读字符串时, 必须保证存储的空间足够, 否则出错
- char c1[5];
- char c2[5];
- cin>> c1;
- cin>> c2;
输入 abcde 回车 // 出错 只能接收 5-1 = 4 个字符, 并在末尾自动添加空字符. c1[4] == 0
(2),cin.get()
该函数有三种格式: 无参, 一参数, 二参数
即 cin.get(), cin.get(char ch), cin.get(array_name, Arsize)
读取字符的情况:
输入结束条件: Enter 键
对结束符处理: 不丢弃缓冲区中的 Enter
cin.get() 与 cin.get(char ch)用于读取字符, 他们的使用是相似的,
即: ch=cin.get() 与 cin.get(ch)是等价的.
读取字符串的情况:
cin.get(array_name, Arsize)是用来读取字符串的, 可以接受空格字符, 遇到 Enter 结束输入, 按照长度 (Arsize) 读取字符, 读取 Arsize-1 个字符. 会丢弃最后的 Enter 字符.
- char c1[5]
- cin>> c1;
输入: 123456 回车 //c1 中[1][2][3][4][(空字符)];
(3).cin.getline()
cin.getline() 与 cin.get(array_name, Arsize)的读取方式差不多, 以 Enter 结束, 可以接受空格字符. 按照长度 (Arsize) 读取字符, 会丢弃最后的 Enter 字符.
但是这两个函数是有区别的:
cin.get(array_name, Arsize)当输入的字符串超长时, 不会引起 cin 函数的错误, 后面的 cin 操作会继续执行, 只是直接从缓冲区中取数据. 但是 cin.getline()当输入超长时, 会引起 cin 函数的错误, 后面的 cin 操作将不再执行.
来源: http://www.bubuko.com/infodetail-2631535.html