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(); // 输入流完全正常
时间: 2024-10-05 11:33:22