美文网首页
C++ cin输入流略解

C++ cin输入流略解

作者: 容蘅 | 来源:发表于2021-02-24 19:22 被阅读0次

标准输入流是从标准输入设备(键盘)流向程序的数据。在头文件iostream.h中定义了cin、cout、cerr、clog 4个流对象,但只有cin是输入流,cout、cerr、clog是输出流。

cin是istream类的对象,它从标准输入设备(键盘)获取数据,程序中的变量通过流提取符“>>”从流中提取数据。流提取符“>>”从流中提取数据时通常跳过输入流中的空格、tab键、换行符等空白字符

注意:只有在输入完数据再按回车键后,该行数据才被送入键盘缓冲区,形成输入流,提取运算符“>>”才能从中提取数据。需要注意保证从流中读取数据能正常进行。

例如:

int a,b;    

cin>>a>>b;

若从键盘上输入

21 abc

变量a从输入流中提取整数21,提取操作成功,此时cin流处于正常状态。但在变量b准备提取一个整数时,遇到了字母a,显然提取操作失败了,此时,cin流被置为出错状态。只有在正常状态时,才能从输入流中提取数据。

当遇到无效字符或遇到文件结束符(不是换行符,是文件中的数据已读完)时,输入流cin就处于出错状态,即无法正常提取数据。此时对cin流的所有提取操作将终止。在IBM PC及其兼容机中,以Ctrl + Z表示文件结束符。在UNIX和Macintosh系统中,以 Ctrl + D表示文件结束符。当输入流cin处于出错状态时,如果测试cin的值,可以发现它的值为false(假),即cin为0值。如果输入流在正常状态,cin的值为true(真),即cin为 一个非0值。可以通过测试cin的值,判断流对象是否处于正常状态和提取操作是否成功。如:

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

例:通过测试cin的真值,判断流对象是否处于正常状态。

#include <iostream>

using namespace std;

int main( )

    float grade; 

    cout<<"enter grade:";

    while(cin>>grade)//能从cin流读取数据

    {     

        if(grade>=85)

        {

            cout<<grade<<"GOOD!"<<endl;

        }

        if(grade<60)

        {

            cout<<grade<<"fail!"<<endl;  cout<<"enter grade:";

        } 

    }          

    cout<<"The end."<<endl;  

     return 0;

}        

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

运行情况如下:

enter grade: 67

enter grade: 89

89 GOOD!

enter grade: 56

56 fail!

enter grade: 100

100 GOOD!

enter grade: ^Z

//键入文件结束符

The end.

在遇到文件结束符时,程序结束。如果某次输入的数据为

enter grade: 100/2

流提取符”>>”提取100,赋给grade,进行if语句的处理。然后再遇到”/”,认为是无效字符,cin返回0。循环结束,输出”The end.”。

在不同的C++系统下运行此程序,在最后的处理上有些不同。以上是在GCC环境下运行程序的结果,如果在VC++环境(笔者使用win7系统)下运行此程序,在键入Ctrl + Z 时,需要敲击两次回车,程序才输出”The end.”。


因时间较为紧张,暂且写个略解,待后续有时间,将会补个详解的,请见谅φ(>ω<*)

相关文章

  • C++ cin输入流略解

    标准输入流是从标准输入设备(键盘)流向程序的数据。在头文件iostream.h中定义了cin、cout、cerr、...

  • c++学习2

    cin.ignore()从输入流中忽视多个字符 cin.getline()从输入流中获取多个字符 cin.peek...

  • C++ 学习笔记之——输入和输出

    在 C++ 中,我们通过调用输入输出流库中的流对象 cin 和 cout 来实现输入和输出。 在用 cin 进行输...

  • C++ 基础语法

    cin cout C++ 中常使用 cin 、 cout 进行控制台的输入、输出 cin 用的右移运算符 cout...

  • c++输入输出提速

    C++的cin和cout取消同步:

  • string

    c++的string的输入问题 问题如下 getline(cin, s1); //接收一行数据cin >> s1;...

  • C++ Primer备忘

    第I部分 C++基础 cin和cout的箭头方向cin指向变量,输出指向cout /*和*/采用就近匹配原则,因此...

  • Day_01 初次遇见c++

    1.给出一段代码作为讲解载体 若要进行输入输出操作,则c++代码需要提供一下两行代码: 使用cout和cin进行输...

  • [C++之旅] 2 基本输入、输出

    [C++之旅] 2 基本输入、输出 ​ cin和cout为预定义对象,cin主要用于从终端的键盘读取数据 ,c...

  • (C++)读取文本文件数据、多个源文件之间的调用

    C++编程-循环读取文件 使用cin读入字符数组的时候,遇到空白字符就会停止。例如,cin >> ch,如果输入的...

网友评论

      本文标题:C++ cin输入流略解

      本文链接:https://www.haomeiwen.com/subject/egtefltx.html