在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1.C++ I/O各类之间的继承关系图 参考网址: http://www.cplusplus.com/reference/iolibrary/ Note: 在程序中包含iostream文件将自动创建8个流对象(4个用于窄字符流, 4个用于宽字符流),如下: cin --标准输入流,该流被关联到标准输入设备(通常为键盘) ----> wcin cout --标准输入流,该流被关联到标准输出设备(通常为显示器) ----> wcout cerr --标准错误流,类似cout,但cerr流没有缓冲区 ----> wcerr clog --标准错误流,类似cerr,但clog流拥有缓冲区 ----> wlog 由上图可知,cin 是一个istream对象,拥有istream的相关成员函数; cout是一个ostream对象,拥有ostream的相关成员函数和数据成员 2.I/O 常见的成员函数 对于istream类而言,其常见的成员函数如下(以cin对象实例): istream::get --istream对get方法进行了重载,常见的调用get的形式有4种,如下: 1) int get(); //读取下一个字符,返回该字符的ascii码 2) istream & get(char & c); //读取下一个字符,并将其赋值给字符变量 c 3) istream & get(char * s, streamsize n); //从输入流中读取指定大小的字节(参数n),并存储到s所指向的地址空间中 4) istream & get(char * s, streamsize n, char delim); //冲输入缓冲区中读取n字节,并存储到s指向的存储空间中 Note: 1) get的第3种形式和第4种形式,均读区最多n字节的内容;不同之处在于 istream & get(char * s, streamsize n);在读取n字节或遇到换行符时,停止读取 istream & get(char * s, streamsize n, char delim);在读取n字节或遇到delim指定的分隔符时停止读取 形式3相当于如下的形式4样式: get(char * s, streamsize n) ----> get(char * s, streamsize n, '\n'); 2) get的后两种形式中,当读取的字符超过n指定的值时,get不会重置流状态
istream::getline istream & getline(char * s, streamsize n); istream & getline(char * s, streamsize n, char delim); Note: getline 与 get都可以用来读取一行输入,不同在于 1) getline读取一行时,连同换行符'\n'一起从输入流中读取,然后丢弃\n,在读取的字符最后加上\0空字符,以表示字符串结尾 get不会读取\n换行符,\n依然保留在输入流中,以备后续的读取 2) getline读取超过n个字节时,重置流状态,设置failbit等流标志位;get函数则不会进行该操作
istream::ignore istream & ignore(streamsize n, char delim = EOF); //提取并丢弃字符 istream::gcout streamsize gcount() const; //获取最后一次非格式化读取的字节数 istream::peek int peek(); //查看输入流中下一个字符,返回该字符的ascii码 Note: peek仅仅查看,并不从输入流中读取字符 istream::putback istream & putback(char c); //将字符c放回输入流中(插入到输入流中,以备下一次读取) istream::read istream & read(char * s, streamsize n); //从输入流中读取n字节,并存储到s指定的存储空间中 其他:tellg , seekg //用于输入流定位的函数
对于ostream类而言,其常见的成员函数如下(以cout对象实例): ostream::put ostream & put(char c); //将字符c插入到输出流中,即打印字符c ostream::write ostream & write(const char * s, streamsize n); //将s从的前n个字节插入到输入流中 其他: tellp, seekp //用于输出流定位的函数 flush //刷新输出流
3.文件操作 ifstream::open void open(const char * filename, ios_base::openmode mode = ios_base::in); //打开filename文件,并将它与ifstream对象关联 void open(const string & filename, ios_base::openmode mode = ios_base::in); ifstream::is_open bool is_open() const; //检测文件是否与ifstream对象关联 ifstream::close void close(); //关闭ifstream对象与文件的链接 ofstream::open void open(const char * filename, ios_base::openmode mode = ios_base::out); void open(const string & filename, ios_base:openmode mode = ios_base::out); 其他:ofstream::is_open, ofstream::close与ifstream相同 Note: 1) ios_base::openmode指定了打开文件的模式,常见的模式有: ios_base::app //append ios_base::ate //at end ios_base::in //input ios_base::out //output ios_base::trunc //truncate ios_base::binary //binary 2)可将多个openmode通过 | (与运算)进行组合,如: ios_base::out|ios_base::trunc
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论