zoukankan      html  css  js  c++  java
  • C++ cin判断输入结束(读取结束)

    转载自:http://c.biancheng.net/view/277.html

    cin 可以用来从键盘输入数据;将标准输入重定向为文件后,cin 也可以用来从文件中读入数据。在输入数据的多少不确定,且没有结束标志的情况下,该如何判断输入数据已经读完了呢?例如,输入若干个正整数,输出其中的最大值,程序该如何编写?

    代码如下(用cin判断输入结束):

     1 #include <iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int n;
     6     int maxN = 0;
     7     while (cin >> n){  //输入没有结束,条件就为真
     8         if (maxN < n)
     9             maxN = n;
    10     }
    11     cout << maxN;
    12     return 0;
    13 }

    假设该程序编译得到的可执行程序是 mycin.exe。在 Windows 系统中,通过键盘输入时,在单独的一行按 Ctrl+Z 键后再按回车键,就代表输入结束。因此程序运行时,输入若干个正整数后换行,再按 Ctrl+Z 键和回车键,程序就会输出最大值并结束。即cin>>n这个表达式在碰到 Ctrl +Z 时,会返回 false。

    在 UNIX/Linux 系统中,Ctrl+D 代表输入结束。

    如果将标准输入重定向为某个文件,如在程序开始添加freopen("test.txt", "r", stdin);语句,或者不添加上述语句,但是在 Windows 的“命令提示符”窗口中输入:

    mycin < test.txt

    则都能使得本程序不再从键盘输入数据,而是从 test.txt 文件输入数据(前提是 test.txt 文件和 mycin.exe 在同一个文件夹中)。在这种情况下,test.txt 文件中并不需要包含 Ctrl+Z,只要有用空格或回车隔开的若干个正整数即可。

    cin 读到文件末尾时,cin>>n就会返回 false,从而导致程序结束。

  • 相关阅读:
    关于dva前后端分离的跨域问题
    十大经典排序算法
    Java并发编程核心概念一览
    StringBuilder线程为什么不安全
    Java序列化的10个问题
    10 个最难回答的 Java 问题
    lombok @EqualsAndHashCode 注解讲解
    内存泄漏和内存溢出的区别和联系
    RabbitMQ
    RabbitMQ原理图
  • 原文地址:https://www.cnblogs.com/lijiaxin/p/10652048.html
Copyright © 2011-2022 走看看