什么是流及流库
流
是指从一个位置向另一个位置传输的一连串数据的集合
在输入输出过程中,会在内存中为每一个数据流开辟一个内存缓冲区,用来存数据。从而匹配不同工作效率的对象。
输入输出流库结构
标准输入流
标准输入流——从标准输入设备(键盘)流向程序的数据.
一般使用 cin 流对象进行输入
例如:
int a, b;
cin >>a>>b; // 从键盘输入2个整数
**>>
有什么特点 **
- 1.符号重载
- 2.以空格、回车做分隔符
cin是istream类的对象,除了>>
符号外,常用函数如下
函数 功能
read
无格式输入指定字节数get
从流中提取字符,包括空格getline
从流中提取一行字符ignore
提取并丢弃流中指定字符peek
返回流中下一个字符,但不从流中删除gcount
统计最后输入的字符个数seekg
移动输入流指针tellg
返回输入流中指定位置的指针值
介绍get
函数和getline
函数
get
函数
istream类的get函数有三种
int get();
istream & get(char & rch);
istream & get(char *pch, int nCount, char delim='\n');
利用无参数get
函数读入数据
#include <iostream>
using namespace std;
int main()
{
char c;
cout << "enter a sentence:" >> endl;
while (1)
{
c = cin.get();
if(c == '\n')
{
break;
}
else
cout << c;
}
return 0;
}
其中c=cin.get()
可以用cin.get(c)
替换
执行结果如下:
enter a sentern:
I am a student! (输入)
I am a student! (输出)
利用多个参数的get函数读入数据
#include<iostream>
using namespace std;
int main()
{
char ch[80];
cout << "enter a sentence:" << endl;
cin.get(ch,70,'|'); // 结束符‘|’
cout<<ch<<endl;
cin.ignore(1); // 忽略一个字符
cin.get(ch,70);
cout<<ch<<endl;
return 0;
}
执行结果如下:
enter a sentence:
beijingshi|chaoyangqu
beijingshi
chaoyangqu
istream类的getline函数
istream& getline(char* pch, int nCount, char delim = '\n')
#include<iostream>
using namespace std;
int main()
{
char ch[80];
cout<<"enter a sentence:"<<endl;
cin.getline(ch,70,'|'); //读69个字符或遇'|'结束
cout<<ch<<endl; // 这个地方不需要使用cin.ignore(1), 原因是geline会将结束字符自动舍去
cin.getline(ch,70); //读69个字符或遇'\n'结束
cout<<ch<<endl;
return 0;
}
执行结果如下:
enter a sentence:
beijingshi|chaoyangqu
beijingshi
chaoyangqu
cin.get() 与 cin.getline()的比较
cin.get(字符数组, 字符个数n, 终止字符)
cin.getline(字符指针, 字符个数n, 终止字符)
相同之处
- 从输入流提取n-1个字符放入数组
- 函数返回值是非0值
- 若遇到文件结束符,则返回值为0
不同之处
- 当读到终止字符时:
cin.getline()
: 将指针移动到终止字符之后cin.get()
: 将指针移动到终止字符处
- 下次继续读取时候的位置不同