码迷,mamicode.com
首页 > 编程语言 > 详细

C++ Primer 笔记——输入输出

时间:2017-07-23 18:25:49      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:mac   put   alt   对象   检查   class   内容   基类   文件   

1.C++语言并未定义任何输入输出语句,取而代之,包含了一个全面的标准库来提供IO机制。

技术分享

由上图能够知道,I/O操作的基类是ios_base,各个类的用途例如以下:

  • <iostream>
  •                      istream    从流中读取数据
  •                      ostream   向流中写数据
  •                      iostream  对流进行读写操作。派生于istream和ostream
  • <fstream>
  •                      ifstream    从文件里读取数据。派生于istream
  •                      ofstream   向文件里写数据,派生于ostream
  •                      fstream     读写文件, 派生于iostream
  • <sstream>
  •                      istringstream    读取string对象。派生于istream
  •                      ostringstream   写string对象。派生于ostream
  •                      stringstream     读写string对象,派生于iostream

 

2.C与C++处理输入输出的方式不同,我们从C语言的输入输出可以很明显看出是函数调用方式,而C++的则是对象模式,iostream类是派生于ostream类和istream类,而cout和cin是ostream类和istream类的对象。

 

3. std::endl 实质上是一个函数,它做了两件事情:输出一个 ‘\n‘ 并刷新缓冲区。

// VS2015编译器上的定义    
// MANIPULATORS
template<class _Elem,
    class _Traits> inline
    basic_ostream<_Elem, _Traits>&
        __CLRCALL_OR_CDECL endl(basic_ostream<_Elem, _Traits>& _Ostr)
    {    // insert newline and flush stream
    _Ostr.put(_Ostr.widen(\n));
    _Ostr.flush();
    return (_Ostr);
    }
    // 以下三个语句是等价的
    std::cout << std::endl;
    std::cout << &std::endl;
    std::cout << \n << std::flush;

 

4.因为系统在空闲的时候会不停的检查缓冲区,如果发现新内容,将刷新缓冲区,这也是为什么我们不用std::endl或std::flush时也可以正常输出的原因。

 

5.当从键盘向程序输入数据时,对于如何指出文件结束,不同操作系统有不同的约定。在Windows系统中,输入文件结束符的方法是Ctrl + Z,然后按Enter或Return键。在UNIX系统中,包括Mac OS X系统中,文件结束符输入是用Ctrl+D。

 

6.我们在输入的过程中,可以用一些std::cin的函数来判断输入的结果是否正确。

    // 以下返回都是bool值
    std::cin.bad();        // 输入流出现致命性错误,不可挽回 
    std::cin.fail();    // 输入流出现非致命性错误,可挽回
    std::cin.eof();        // 输入流出到达文件结尾
    std::cin.good();    // 输入流完全正常

 

C++ Primer 笔记——输入输出

标签:mac   put   alt   对象   检查   class   内容   基类   文件   

原文地址:http://www.cnblogs.com/zoneofmine/p/7221711.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!