在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:
1、插入器(<<)
向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout<<"Write Stdout"<<'\n';就表示把字符串"WriteStdout"和换行字符('\n')输出到标准输出流。
2、析取器(>>)
从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;
ifstream
ifstream provides an interface to read data from files as input streams.
stringstream
stringstream provides an interface to manipulate strings as if they wereinput/output streams.
Getline函数
用getline读取整行文本
Getline 可接受两个参数:一个输入流对象和一个string对象。getline从输入流的下一行读取,并保存读取的内容到string中,不包括换行符。即遇到换行符就停止读入并返回。如果第一个字符就是换行符,则string参数将被置为空string。
其中,常常需要逐行读取一个文本文件,举例来说:
void read_config( string &conf )
{
ifstream is( conf.c_str );
if( !is.is_open() )
{
cerr<<” cannot open file”<<endl;
return ;
}
string line;
while( getline( is, line) )
{
stringstream ss( line );
string value;
getline( ss, value, ‘=’ ); //这样就可以对每一行的进行处理
…
}
}