第二章 stringstream的使用
如果按照内容来给一个标题的话,那么这一讲的内容其实是上一讲的后续部分,所以都属于C++标准流一类,但是又碍于我们这不是写书,而是按照文章来推送,所以这算是一个新的章节,然尽管如此,这依然算是C++的流的介绍,所以,在上一章文章中我们了解了C++标准流的用法后那么我们现在从文件流说起。
程序无非是数据的操作,最常用的莫过于数据的读写了,还记得我们在上一讲的内容中使用自定义的流扩展了一个文件流——FileOStream,该类继承至MyStrIobase,当然我们可以直接继承至OStream,好吧,想想为什么要继承至OStream,继承至OStream的优势又是什么。
我们不对FileOstream进行讨论,至少大家已经知道了C++标准流背后的一些原理,所以我们这一讲的内容将是站在上一讲的基础上来对fstream和stream的探索。
从fstream说起
在C++标准库中,fstream继承至iostream,所以iostream该有的操作他都有,fstream还具有iostream不具有的能力——文件的度读写。
如同上一讲的内容,文件的读写简单点说就是将数据发送到指定的目的地或者是从指定的地方将数据取回来,所以,我们可以这么来解读
iostream所干的事——将这个目的地给固定了,而fstream却可以自由指定这个目的地——文件,对于文件我们可以使用构造函数来指定,同样可以使用open接口来重定向:
//+-----------------------
#include
int main(){
std::ofstream outFile(\ outFile<<\ outFile.close();
outFile.open(\ outFile<<\ outFile.close();
std::ifstream inFile(\ std::string str;
std::getline(inFile,str); std::cout< return 0; } //+------------------------ 从上面的代码中,我们可以看到,我们可以通过构造函数来打开文件,同样也可以通过提供的成员函数open来打开文件,当我们写完数据之后我们可以使用close来关闭文件,关闭当前文件后又可以打开其他文件,ofstream用来将数据写入文件,ifstream用来从文件中读取,所以,有了第一章的基础后来使用fstream是非常简单的,当然或许我们要说说的是对于二进制文件的读写,对于二进制数据还记得我们上一讲中说到的write函数吗? //+----------------------- ostream& write(const char*,streamsize); //+----------------------- 当时我们说这个函数可以用来处理字符串,其实它不只是能够处理字符串,他能够处理一切数据,为什么这么说呢?首先,它的第一个参数是一个char的指针,第二个参数是一个大小,而char*可以转换为任意数据的指针,同样任意数据都可以转换char*,比如: //+-----------------------