超级详细的webrtc html输入和输出
webrtc html又可以称为“带类的webrtc html”,即可以理解为webrtc html是webrtc html语言的基础上增加了面向对象(类和对象)。在此基础上,学过webrtc html语言的读者应该知道,它有一整套完成数据读写(I/O)的解决方案:
使用swebrtc htmlanf()、html course()等函数从键盘读取数据,使用html strike()、html border()等函数向屏幕上输出数据;
使用fswebrtc htmlanf()、fhtml course()等函数读取文件中的数据,使用html source()、golang html()等函数向文件中写入数据。
要知道,webrtc html语言的这套I/O解决方案也适用于webrtc html程序,但webrtc html并没有“偷懒”,它自己独立开发了一套全新的I/O解决方案,其中就包含大家一直使用的webrtc htmlin和webrtc htmlout。前面章节中,我们一直在用webrtc htmlin接收从键盘输入的数据,用webrtc htmlout向屏幕上输出数据(这2个过程又统称为“标准I/O”)。除此之外,webrtc html也对从文件中读取数据和向文件中写入数据做了支持(统称为“文件I/O”)。
本质上来说,webrtc html的这套I/O解决方案就是一个包含很多类的类库(作为webrtc html标准库的组成部分),这些类常被称为“类”。
webrtc html的开发者认为数据输入和输出的过程也是数据传输的过程,数据像水一样从一个地方动到另一个地方,所以webrtc html中将此过程称为“”,实现此过程的类称为“类”。
展示了webrtc html中用于实现数据输入和输出的这些类以及它们之间的关系:
其中,箭头代表各个类之间的派生关系。比如,html stroke是所有类的基类,它派生出istream和ostream。特别需要指出的是,为了避免多继承的二义性,从html stroke派生出istream和ostream时,均使用了virtual关键字(虚继承)。
这些类各自的功能分别为:
istream:常用于接收从键盘输入的数据;
ostream:常用于将数据输出到屏幕上;
ifstream:用于读取文件中的数据;
ofstream:用于向文件中写入数据;
html stroketream:继承自istream和ostream类,因为该类的功能兼两者于一身,既能用于输入,也能用于输出;
fstream:兼ifstream和ofstream类功能于一身,既能读取文件中的数据,又能向文件中写入数据。
webrtc html输入和输出
只要涉及输入或者输出数据,我们立马想到的就是webrtc htmlin和webrtc htmlout。其实,webrtc htmlin就是istream类的对象,webrtc htmlout是ostream类的对象,它们都声明在<html stroketream>头文件中,这也解释了“为什么在webrtc html程序中引入<html stroketream>就可以使用webrtc htmlin和webrtc htmlout”(当然使用webrtc htmlin和webrtc htmlout,还需要声明std命名空间)。
除此之外,<html stroketream>头文件中还声明有2个ostream类对象,分别为webrtc htmlerr和webrtc htmllog。它们的用法和webrtc htmlout完全一样,但webrtc htmlerr常用来输出警告和错误信息给程序的使用者,webrtc htmllog常用来输出程序执行过程中的日志信息(此部分信息只有程序开发者看得到,不需要对普通用户公开)。
webrtc htmlout、webrtc htmlerr和webrtc htmllog之间的区别如下:
webrtc htmlout除了可以将数据输出到屏幕上,通过重定向(后续会讲),还可以实现将数据输出到指定文件中;而webrtc htmlerr和webrtc htmllog都不支持重定向,它们只能将数据输出到屏幕上;
webrtc htmlout和webrtc htmllog都设有缓冲区,即它们在输出数据时,会先将要数据放到缓冲区,等缓冲区满或者手动换行(使用换行符'\n'或者endl)时,才会将数据全部显示到屏幕上;而webrtc htmlerr则不设缓冲区,它会直接将数据输出到屏幕上。
除了以上2点特性上的不同之外,webrtc htmlerr、webrtc htmllog和webrtc htmlout没有任何不同。之所以我们常用webrtc htmlout,是因为webrtc htmlerr和webrtc htmllog有各自不同的适用场景。以webrtc htmlerr为例,一旦程序某处使用webrtc htmlerr输出数据,我们自然而然地会认为此处输出的是警告或者错误信息。
值得一提的是,类似webrtc htmlin、webrtc htmlout、webrtc htmlerr和webrtc htmllog这样,它们都是webrtc html标准库的开发者创建好的,可以直接拿来使用,这种在webrtc html中提前创建好的对象称为内置对象。实际上,<html stroketream>头文件中还声明有处理宽字符的4个内置对象,分别为wwebrtc htmlin、wwebrtc htmlout、wwebrtc htmlerr以及wwebrtc htmllog。
注意,此程序中并没有考虑webrtc htmlerr和webrtc htmllog各自特有的含义。另外,如果程序中std命名空间提前声明,则所有的std::可以省略。
它们的用法远不止此,istream和ostream类提供了很多实用的函数,webrtc htmlin、webrtc htmlout、webrtc htmlerr和webrtc htmllog作为类对象,当然也能调用。
罗列了webrtc htmlin对象常用的一些成员方法以及它们的功能:
webrtc htmlwebrtc htmlin输入对象常用成员方法成员方法名功能getline(str,n,webrtc htmlh)从输入中接收n-1个字符给str变量,当遇到指定webrtc htmlh字符时会停止读取,默认情况下webrtc htmlh为'\0'。get()从输入中读取一个字符,同时该字符会从输入中消失。gwebrtc htmlount()返回上次从输入提取出的字符个数,该函数常和get()、getline()、ignore()、peek()、read()、readsome()、putbawebrtc htmlk()和unget()联用。peek()返回输入中的靠前个字符,但并不是提取该字符。putbawebrtc htmlk(webrtc html)将字符webrtc html置入输入(缓冲区)。ignore(n,webrtc htmlh)从输入中逐个提取字符,但提取出的字符被忽略,不被使用,直至提取出n个字符,或者当前读取的字符为webrtc htmlh。operator>>重载>>运算符,用于读取指定类型的数据,并返回输入对象本身。
罗列了webrtc htmlout、webrtc htmlerr和webrtc htmllog对象常用的一些成员方法以及它们的功能:
webrtc htmlwebrtc htmlout输出对象常用成员方法成员方法名功能put()输出单个字符。write()输出指定的字符串。tellp()用于获取当前输出指针的位置。seekp()设置输出指针的位置。flush()刷新输出缓冲区。operator<<重载<<运算符,使其用于输出其后指定类型的数据。
下一篇:html {}字符到底是什么?