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'
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);
判断参数表示的字符是否是数字
 
代码示例:
#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");
}

 

posted @ 2020-09-07 12:48  DNoSay  阅读(889)  评论(0编辑  收藏  举报