重要的输入流类:
- istream类最适合用于顺序文本模式输入,cin是其实例
- ifstream类支持磁盘文件输入
- istringstream
构造输入流对象:
- 如果在构造函数中指定一个文件名,在构造该对象时该文件便自动打开
ifstream myFile("filename");
- 在调用默认构造函数之后使用open函数来打开文件
ifstream myFile;//建立一个文件流对象
myFile.open("filename"); //打开文件“filename”
- 打开文件时可以指定模式
ifstream myFile("filename",ios_base::in|ios_base::binary);
输入流相关函数:
- open函数把该流与一个特定的磁盘文件相关联
- get函数的功能与提取运算符(>>)很相像,主要的不同点是get函数在读入数据时包括空白字符
- getline的功能是从输入流中读取多个字符,并且允许指定输入终止字符,读取完成后,从读取的内容中删除终止字符
- read成员函数从一个文件读字节到一个指定的内存区域,由长度参数确定要读的字节数。当遇到文件结束或者在文本模式文件中遇到文件结束标记字符时结束读取。
- seekg函数用来设置文件输入流中读取数据位置的指针
- tellg函数返回当前文件读指针的位置
- close函数关闭与一个文件输入流关联的磁盘文件
输入流应用举例:
/*输入字符串,直到遇到t时停止*/
#include<iostream>
#include<string>
using namespace std;
int main()
{
string line;
cout << "Type a line terminated by 't'" << endl;
getline(cin, line, 't');
cout << line << endl;
system("pause");
return 0;
}
字符串输入流:
- 用于从字符串读取数据
- 在构造函数中设置要读取的字符串
- 功能:支持ifstream类的除open、close外的所有操作
- 典型应用:将字符串转换为数值
输入输出流:
两个重要的输入/输出流:
- 一个iostream对象可以是数据的源或目的
- 两个重要的I/O流类都是从iostream派生的,它们是fstream和stringstream,这些类继承了前面描述的istream和ostream类的功能。
fstream类:
- fstream类支持磁盘文件输入和输出
- 如果需要在同一程序中从一个特定磁盘文件读并写到该磁盘文件,可以构造一个fstream对象
- 一个fstream对象是有两个逻辑自流的单个流,两个子流一个用于输入,一个用于输出
stringstream类:
- stringstream类支持面向字符串的输入与输出,可以用于对同一个字符串的内容交替读写,同样是由两个逻辑子流构成。