2022-2023-1 20221421 《计算机基础与程序设计》第十四周学习总结

作业信息

班级链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP
作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK14
作业正文:2022-2023-1 20221312 《计算机基础与程序设计》第十四周学习总结 - 221421李旻奇 - 博客园 (cnblogs.com)

学习目标:标准输入流

定义:标准输入流是从标准输入设备(键盘)流向程序的数据。

头文件iostream.h中定义了cin,cout,cerr,clog4个流对象,cin输人流,cout,cerr,clog是输出流。

重点api:

cin.get() //一次只能读取一个字符

cin.get(一个参数) //读一个字符

cin.get(三个参数) //可以读字符串

cin.getline()

cin.ignore()

cin.peek()

cin.putback()

提取:
cin是istream类的对象,它从标准输入设备(键盘)获取数据,程序中的变量通过流提取符“>>”从流中提取数据。流提取符“>>”从流中提取数据时通常跳过输人流中的空格、tab键、换行符等空白字符。注意:只有在输入完数据再按回车键后,改行数据才被送人键盘缓冲区,形成输入流,提取运算符“>>”才能从中提取数据。需要注意保证从流中读取数据能正常进行。

换句话说:

cin接受输入时,>> 会过滤掉不可见字符(例如:空格、回车、TAB等)也就是说,从第一个非空白符开始读,直到空白符或者文件结束为止

注意此处与上次总节的右移运算符类似

只有在正常状态时,才能从输入流中提取数据。
   当遇到无效字符或遇到文件结束符(不是换行符,是文件中的数据已读完)时,输人流cin就处于出错状态,即无法正常提取数据。此时对cin流的所有提取操作都将终止。在IBMPC及其兼容机中,以Ctrl+Z表示文件结束符。在UNIX和Macintosh系统中,以Ctrl+D表示文件结束符

例如:    int a,b;
         cin>>a>>b; // 若从键盘上输入 21 abc出错

如果测试cin的值,可以发现它的值为false(假),即cin为O值。如果输入流在正常状态,cin的值为true(真),即cin为一个非0值。可以通过测试cin的值,判断流对象是否处于正常状态和提取操作是否成功。

如:    if(!cin) //流cin处于出错状态,无法正常提取数据
      cout<<"error”;

作用原理

注意:流提取符“>>”不断地从输人流中提取数据(每次提取一个浮点数),如果成功,就可以赋给某个变量,此时cin为真,若不成功则cin为假。如果输入文件结束符,表示数据已完。

有个例子是程序是通过键盘录入读取,但是读取的只有一个

#include <iostream>

using namespace std;

int main01(void)
{

char YourName[50];
int myInt;
long myLong;
double myDouble;
float myFloat;
unsigned int myUsigned;

cout<<"请输入一个int:";
cin>>myInt;

cout<<"请输入一个Long";
cin>>myLong;

cout<<"请输入一个Double:";
cin>>myDouble;

cout<<"请输入你的姓名:";
cin>>YourName;

cout<<"\n\n你输入的数是:"<<endl;
cout<<"int:\t"<<myInt<<endl;
cout<<"Long:\t"<<myLong<<endl;
cout<<"double:\t"<<myDouble<<endl;
cout<<"char *:\t"<<YourName<<endl;

return 0;
}
从上面不难看出利用cin流可以实现有缓存输入:

C语言中的getchar函数与流成员函数cin.get()的功能相同,C++保留厂C的这种用法,可以用getchar(c)从键盘读取一个字符赋给变量c。

ignore函数

   其调用形式为: cin.ignore(n,终止字符) // 函数作用是跳过输人流中n个字符,或在遇到指定的终止字符时提前结束(此时跳过包括终止字符在内的若干字符)。

如:
      ighore(5,A,) //跳过输入流中5个字符,遇A后就不再跳了
   也可以不带参数或只带一个参数。如
      ignore() (n默认值为1,终止字符默认为EOF)
   相当于:  ignore(1,EOF)

posted @ 2022-12-02 20:56  221421李旻奇  阅读(26)  评论(0编辑  收藏  举报