您的位置:首页 > 其它

I/O流类库(一)

2016-01-04 16:19 113 查看

I/O

数据的输入输出(input/output简写为I/O)

对标准输入设备和标准输出设备的输入输出简称为标准I/O

堆在外存磁盘上的文件的输入输出简称为文件I/O

对内存中指定的字符串存储空间的输入输出简称为串I/O

数据输入输出的过程,可以形象的看成流

从流中获取数据的操作称为“提取”(输入)操作

向流中添加数据的操作称为“插入”(输出)操作

标准输入输出流

文件流

字符串流

流类库继承体系



流库具有两个平行的基类:streambuf和ios类,所有流类均以两者之一作为基类

streambuf类提供对缓冲区的低级操作:设置缓冲区、对缓冲区指针操作、向缓冲区存/取字符

ios_base、ios类记录流状态,支持对streambuf的缓冲区输入/输出的格式化或非格式化转换

streambuf:使用串保存字符序列。扩展streambuf在缓冲区提取和插入的管理

filebuf:使用文件保存字符串序列。包括打开文件、读/写、查找字符

四个输入输出对象

C++为用户进行标准I/O操作定义了四个类对象:cin、cout、cerr和clog

cin为istream流类的对象,代表标准输入设备键盘,后三个为ostream流类的对象

cout代表标准输出设备显示器

cerr和clog含义相同,均代表错误信息输出设备显示器

ostream流的操作

operator<<

可以连续输出,因为<<返回的还是cout

put()

输出单个字符

返回一个ostream对象的引用

cout.put('H').put('i')


write()

write(buf, len)

write()返回一个ostream对象的引用

cout.write(buf, len) //char buf[len]

istream流的操作

operator>>操作

get()

- 读取单个字符

- 返回一个整数(输入字符的ASCall码值)

getline()

read()

peek()

putback()

get()

1. 读取单个字符
2. 返回一个整数(输入字符的ASCall码值)


get(cahr&)

1. 返回单个字符
2. 返回一个istream对象的引用


#include <iostream>

using namespace std;

int main(void)
{
char ch1, ch2;
cin.get(ch1).get(ch2);
cout << ch1 <<"  "<<ch2<< endl;
return 0;
}




getline()

1. 读取一行(遇到回车键)
2. 返回istream对象的引用
3. getline()与>>的区别:
char string1[256];
cin.getline(string1, 256); //get a whole line
cin>>string1;   //stop at the first blank space


#include <iostream>

using namespace std;

int main(void)
{
char buf[10] = { 0 };
cin.getline(buf, 9);
cout << buf << endl;
return 0;
}




read()

1. read(buf, len)
2. 返回一个istream对象的引用
3. 对空白字符照读不误
4. 必须读满len个字符才停止


#include <iostream>

using namespace std;

int main(void)
{
char buf[10] = { 0 };
cin.read(buf, 5);
cout << buf << endl;
return 0;
}




peek()

查看而不读取


putback()

将一个字符添加到流


#include <iostream>

using namespace std;

int main(void)
{
char c[10],c2,c3;
c2 = cin.get();
c3 = cin.get();
cin.putback(c2);
cin.getline(c, 9);
cout << c << endl;
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: