首页 > 其他 > 详细

循环和文本输入

时间:2019-12-03 02:21:13      阅读:81      评论:0      收藏:0      [点我收藏+]

循环和文本输入

  • 使用原始的cin进行输入
    • 使用哨兵字符作为停止标记。
    • 例如遇到#停止。
    • 这种方式cin将忽略空格和换行符
    • 发送给cin的输入被输入缓冲,这意味着只有在用户按下回车键后,整个字符序列将被发送给程序。
    char ch;
    cin>>ch;
    while(ch != '#')
    {
      cout<<ch<<endl;
      cin>>ch;
    }
  • 使用cin.get(char)
    • cin.get(ch)读取输入中的下一个字符(即使是空格),并将字符赋给ch。
    • 用下面的代码代替上面的代码,输出将会包含空格。
    char ch;
    cin.get(ch);
    while(ch != '#')
    {
      cout<<ch<<endl;
      cin.get(ch);
    }
  • 文件尾条件
    • 上述以某个字符为结尾的方式并不是对所有情况都适用。
    • 如果输入来自文件,那么可以采用检测文件尾(EOF)的方式。
    • 有些系统的命令行可以模拟文件尾。
    • 假设windows中有一个gofish.exe可执行程序和一个fishtale文件。则输入
    • gofish < fishtale
    • 表示从fishtale中获取输入。
    • 可以使用cin.eof()和cin.fail()检测是否到达文件尾。如果到达则返回true。
    • 如果监测到EOF,那么cin将不读取输入,再次调用cin也不会读取。使用cin.clear(),可以清除EOF标记,使得输入继续进行。
    • istream提供了一个可以将istream对象转变尾bool类型的函数。当cin出现在需要bool类型的时候,该函数将会被调用。如果最后一次读取成功,返回true,否则返回false。该方式更加通用,可以检测到其他的输入失败的原因。例如:磁盘故障。
    char ch;
    cin.get(ch);
    while(!cin.fail())
    {
      cout<<ch<<endl;
      cin.get(ch);
    }
    //更加简洁的方式
    char ch;
    while(cin.get(ch))
    {
      cout<<ch<<endl;
    }
  • cin.get()方式和cout.put(char(ch))
    • cin.get()返回输入中的下一个字符的字符编码转为int返回。
    • 当输入到达EOF时,cin.get()将返回一个用符号常量EOF表示的特殊值。该常量在iostream中定义。通常EOF被定义为-1。
    • 赋值语句的结果为做操作符的值。
    int ch;
    ch = cin.get();
    while(ch != EOF)
    {
      ch = cin.get();
      cout.put(char(ch));
    }
    //更简洁的写法
    int ch;
    while((ch = cin.get()) != EOF)
    {
      cout.put(char(ch));
    }

循环和文本输入

原文:https://www.cnblogs.com/yangzixiong/p/11973912.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!