zoukankan      html  css  js  c++  java
  • Windows环境下C++中关于文件结束符的问题

    参考资料:http://www.cnblogs.com/day-dayup/p/3572374.html

    一、前言

      在不同的OS环境下,程序中对应的文件结束符有所不一样,根据《C++ Primer Plus》一书,可知,Windows环境下的文件结束符为:Ctrl + z;Unix/Linux环境下的文件结束符为:Ctrl + d。

      对于结束符的检测,Windows环境下采用阻塞式的方式进行检查,Unix/Linux则采用非阻塞式方式进行检测。

    二、就Windows环境下的文件结束符的相关分析

      对于Windows而言,由于其采用的是阻塞式的方式进行文件结束符的检测,对于输入者而言,其体验就是:只有键入Enter键才有可能触发检测在此之前是否存在【Ctrl + z】输入的存在。

      如果当前的输入缓存区内有可读的数据,那么就不会检测【Ctrl + z】的存在(有了可读的数据,不认为到了输入流的末尾)。

      【Ctrl + z】产生的不是一个普通的ASCII码值,产生的并不是一个字符,并不能够存放至输入缓冲区。

      综上,可以总结为出,输入流结束的条件为:【Ctrl + z】之前不能有任何字符的输入(【Enter除外】),否则【Ctrl + z】起不到结束输入流的作用。

      另外,如果想在一个程序中不同地方利用cin的各类方式来读取输入流的数据,可以在使用cin语句之前进行缓冲区的清除。

    1 fflush(stdin);
    2 cin.clear();
  • 相关阅读:
    软件工程师的悲哀
    关于ControlTemplate 2
    DataTemplate总结2(学习)
    ObjectiveC——类
    6 Popular Ideas That Fail
    Develop Cross Platform Mobile App
    DP 与 DO(学习)
    Titanium颜色总结
    Illustrator Tips
    Titanium API
  • 原文地址:https://www.cnblogs.com/wyt123/p/10704285.html
Copyright © 2011-2022 走看看