C++面向对象入门(四十六)流类库输入输出成员函数
流类库除了提供重载的插入符和提取符外, 还提供了一些其他输入输出函数, 以满足不同的功能需求
输入流常用成员函数:
1 read()函数
istream& read(char *pch, int nCount); : 从输入流读取nCount个字符并将其放入pch所指的缓冲区. 如果读取字符数量少于nCount,
则设置failbit错误位.
2 get()函数
istream&/int get(); :
从指定的输入流中输入一个字符(包括空白字符), 并返回该字符作为函数调用的值; 遇到输入流的文件结束时,
此get()函数返回EOF.
istream&/int get(char& rch); :
从指定的输入流中输入一个字符(包括空白字符), 并存储到rch中. 遇到输入流的文件结束时,此
get()函数返回0. 否则返回对istream对象的引用, 并用该引用再次调用get()成员函数.
istream&/int get(char& pch, int nCount, char delim='\n'); :
从指定输入流读取字符. 函数要么读取到nCount个字符后终止, 要么读取到指定字符delim终止. 函数把读取的字符存储到数组中, 并
在字符串后加结束符'\0'. 终止符不会存储在数组中, 但仍保留在输入流中(终止符就是要读取的下一个字符), 所以除非终止符在输入
流被删除(可以使用ignore()函数), 否则紧接着的第二个get()操作的结果是终止符, 默认情况下是终止符的默认值'\n'
1 read()函数
istream& read(char *pch, int nCount); : 从输入流读取nCount个字符并将其放入pch所指的缓冲区. 如果读取字符数量少于nCount,
则设置failbit错误位.
2 get()函数
istream&/int get(); :
从指定的输入流中输入一个字符(包括空白字符), 并返回该字符作为函数调用的值; 遇到输入流的文件结束时,
此get()函数返回EOF.
istream&/int get(char& rch); :
从指定的输入流中输入一个字符(包括空白字符), 并存储到rch中. 遇到输入流的文件结束时,此
get()函数返回0. 否则返回对istream对象的引用, 并用该引用再次调用get()成员函数.
istream&/int get(char& pch, int nCount, char delim='\n'); :
从指定输入流读取字符. 函数要么读取到nCount个字符后终止, 要么读取到指定字符delim终止. 函数把读取的字符存储到数组中, 并
在字符串后加结束符'\0'. 终止符不会存储在数组中, 但仍保留在输入流中(终止符就是要读取的下一个字符), 所以除非终止符在输入
流被删除(可以使用ignore()函数), 否则紧接着的第二个get()操作的结果是终止符, 默认情况下是终止符的默认值'\n'
3 getline()函数
读取一行字符串后在数组末尾加'\0'. 读取后删除结束符.
读取一行字符串后在数组末尾加'\0'. 读取后删除结束符.
4 gcount()函数
无参函数, 统计最后一次输入操作读取的字符数.
无参函数, 统计最后一次输入操作读取的字符数.
5 ignore()
istream& ignore(int n = 1,int t =EOF); :遇到指定的终止符t时提前跳过输入流中的n个字符结束(此时跳过包括终止字符内的
若干个字符). 终止字符仍然停留在输入流中.
istream& ignore(int n = 1,int t =EOF); :遇到指定的终止符t时提前跳过输入流中的n个字符结束(此时跳过包括终止字符内的
若干个字符). 终止字符仍然停留在输入流中.
6 putback()函数
istream& putback(char ch); : 把上一次从输入流中通过get()或者getline()取得的字符再放回到该输入流中. 对于应用程序
需要扫描输入流以查找特定字符开头的字段来说, 这是非常有用的. 当输入一个字符时, 应用程序把该字符放回输入流, 以保证
输入的数据包含该字符
istream& putback(char ch); : 把上一次从输入流中通过get()或者getline()取得的字符再放回到该输入流中. 对于应用程序
需要扫描输入流以查找特定字符开头的字段来说, 这是非常有用的. 当输入一个字符时, 应用程序把该字符放回输入流, 以保证
输入的数据包含该字符
7 peek()函数
无参函数, 返回输入流的下一个函数, 但并不从输入流中将其删除. 作用是观察该字符, 字符指针仍停留在原来位置上
无参函数, 返回输入流的下一个函数, 但并不从输入流中将其删除. 作用是观察该字符, 字符指针仍停留在原来位置上
输出流常用成员函数
1 write()函数
ostream& write(const char *pch, int nCount); :
把nCount个字符从pch所指的缓冲区写入输出流
1 write()函数
ostream& write(const char *pch, int nCount); :
把nCount个字符从pch所指的缓冲区写入输出流
2 put()函数
ostream& out(char rch); :
用于输出一个字符
ostream& out(char rch); :
用于输出一个字符
这里介绍下一个特殊函数, 仅为示例代码所使用
int isdigit(int c);
判断参数表示的字符是否是数字
int isdigit(int c);
判断参数表示的字符是否是数字
代码示例:
#include <iostream> using namespace std; /* 流类库除了提供重载的插入符和提取符外, 还提供了一些其他输入输出函数, 以满足不同的功能需求 输入流常用成员函数: 1 read()函数 istream& read(char *pch, int nCount); : 从输入流读取nCount个字符并将其放入pch所指的缓冲区. 如果读取字符数量少于nCount, 则设置failbit错误位. 2 get()函数 istream&/int get(); : 从指定的输入流中输入一个字符(包括空白字符), 并返回该字符作为函数调用的值; 遇到输入流的文件结束时, 此get()函数返回EOF. istream&/int get(char& rch); : 从指定的输入流中输入一个字符(包括空白字符), 并存储到rch中. 遇到输入流的文件结束时,此 get()函数返回0. 否则返回对istream对象的引用, 并用该引用再次调用get()成员函数. istream&/int get(char& pch, int nCount, char delim='\n'); : 从指定输入流读取字符. 函数要么读取到nCount个字符后终止, 要么读取到指定字符delim终止. 函数把读取的字符存储到数组中, 并 在字符串后加结束符'\0'. 终止符不会存储在数组中, 但仍保留在输入流中(终止符就是要读取的下一个字符), 所以除非终止符在输入 流被删除(可以使用ignore()函数), 否则紧接着的第二个get()操作的结果是终止符, 默认情况下是终止符的默认值'\n' 3 getline()函数 读取一行字符串后在数组末尾加'\0'. 读取后删除结束符. 4 gcount()函数 无参函数, 统计最后一次输入操作读取的字符数. 5 ignore() istream& ignore(int n = 1,int t =EOF); :遇到指定的终止符t时提前跳过输入流中的n个字符结束(此时跳过包括终止字符内的 若干个字符). 终止字符仍然停留在输入流中. 6 putback()函数 istream& putback(char ch); : 把上一次从输入流中通过get()或者getline()取得的字符再放回到该输入流中. 对于应用程序 需要扫描输入流以查找特定字符开头的字段来说, 这是非常有用的. 当输入一个字符时, 应用程序把该字符放回输入流, 以保证 输入的数据包含该字符 7 peek()函数 无参函数, 返回输入流的下一个函数, 但并不从输入流中将其删除. 作用是观察该字符, 字符指针仍停留在原来位置上 输出流常用成员函数 1 write()函数 ostream& write(const char *pch, int nCount); : 把nCount个字符从pch所指的缓冲区写入输出流 2 put()函数 ostream& out(char rch); : 用于输出一个字符 这里介绍下一个特殊函数, 仅为示例代码所使用 int isdigit(int c); 判断参数表示的字符是否是数字 */ /* 读取一行字符串的最前九个字符或第一个"!"前的字符, 输出其中所有的数字符 */ int main() { char str[10]; int i = 0; cout << "输入一个字符串(最多含九个字符):" << endl; //输入一个字符串 cin.get(str, 10, '!'); //以输出方式打开字符串 char c = str[i]; while (i < cin.gcount()) { if (isdigit(c)) { cout << c; } if (isdigit(c) && !isdigit(str[i])) { cout << endl; } i++; c = str[i]; } cout << endl; system("pause"); }
路漫漫其修远兮,吾将上下而求索。