Posts IO in c++
Post
Cancel

IO in c++

IO in C++

我们一直使用 cin 和 cout 来进行从控制台的输入输出,但实际上,c++语言并未定义任何输入输出语句,取而代之的是使用标准库里的stream(流)的机制来提供IO操作

how to understand stream

“ 流 ”在C++中表示的是一个对象,也就是一个封装的类对象;cin和cout都是一个流类的对象

  • cin是istream的对象,是标准的输入
  • cout是ostream的对象,是标准的输出
  • 两个类分别重载了»和«运算符,用来读取和输出数据

标准库定义了许多类型的IO,分别保存在三个头文件中

  • iostream(istream和ostream都继承于它)
  • fstream(用于向文件的IO)
  • sstream(用于string的IO)

problem of stream

IO操作很可能发生错误,有的错误可以引起很大的问题,所以我们需要检查流的状态,比如像下面这样:

1
2
3
4
while(cin >> val)
{
    ...;
}

但是上面我们说过,cin是一个对象,对象不会返回值;上面的语句调用cin的operator»函数,函数有返回值,返回值给了cin,也就是将状态返回给了cin,那么如何判断cin呢?

实际上原理是while(cin)时,while重载了()运算符,当发现()中的对象是流对象时,就将该对象转化成指针;同时流类重载了operator void*()来将流类对象转化成指针

OLDER POST NEWER POST

Comments powered by Disqus.

Search Results