再学C++Primer(8)-标准IO库

没看懂,以后上。

成都网站设计、成都做网站服务团队是一支充满着热情的团队,执着、敏锐、追求更好,是创新互联的标准与要求,同时竭诚为客户提供服务是我们的理念。创新互联建站把每个网站当做一个产品来开发,精雕细琢,追求一名工匠心中的细致,我们更用心!

2012-3-26


C++的输入输出由标准库提供。标准库定义了一族类型,支持对文件和控制窗口等设备的读写。
主要有下面几个类型:
iostream
istream从流中读取
ostream:写到流中去
iostream:对流进行读写;从istream和ostream派生而来

fstream
ifstream:从文件中读取;由istream派生
ofstream:写到文件中去;由ostream派生
fstream:读写文件;由isstream派生

sstream
istringstream:从string队形中读取,由istream派生
ostringstream:写到string中去;由ostream派生
stringstream:对string对象进行读写;由iostream派生

流状态查询和管理
IO标准库管理了一系列的条件状态成员,用来标记给定的IO对象是否处于可用范围,或者碰到了哪种特定的错误。
可以用下列函数判定文件流状态:
is_open():判定流对象是否与一个打开的文件相联系,若是,返回trun,否则返回false;
good():刚进行的操作成功时返回true,否则返回false;
fail():与good()相反,刚进行的操作失败时返回true,否则返回false;
bad():如果进行了非法操作返回true,否则返回false;
eof():进行输入操作时,若到达文件尾返回true,否则返回false;


如下面的语句,就可以在保证输入正确的情况下执行循环体。

    int ival;     while(cin>>ival)     {         //do something         cout<
文件流
首先看一个最简单的例子.


#include  #include  using namespace std;  int main() {     string name;     cin>>name;     //打开一个输出流     ofstream SaveFile("test.txt");     //向流中输出内容     SaveFile << "Hello,"<
编译运行,在可执行程序当前目录下会出现一个text.txt,里面的内容就是“Hello,XXX(你输入的内容)”。

再来实现文件的读取,并在文件的最后添加内容.

#include  #include  using namespace std;  int main() {      int i;      //输出内容     /*     fstream File("test.txt",ios::in | ios::out);     while(!File.eof())     {       //空格作为单词的分隔符进行读取       File>>i;       cout << i << endl;     }*/     //输入内容     fstream File("test.txt",ios::out|ios::app);     cout<<"Add number"<>i)     {         File<
各种打开模式
ios::app 使所有输出到相应文件的内容都添加到文件末尾,该值只能用于具有输出功能的文件。

ios::ate  使得在打开文件时能够定位到文件末尾

ios::binary  可以以二进制文件打开,默认情况下,所有文件都以文本方式打开。

ios::in  指定为输入

ios::out 制定我输出

ios::trunc 销毁具有相同名字的先前文件的内容,并且将文件长度截断为0,当使用ofstream创建一个输出流时任何先前存在的具有该文件名的文件将被自动截断

组合模式:
out|app 打开文件写操作,在文件尾写入

in|out 打开文件做读写操作,并定位于文件开头处

in|out|trunc 打开文件做读写操作,删除文件中已有的数据


字符串流

iostream标准库支持内存中的输入\输出,只要将流与存储在程序内存中的string对象捆绑起来即可。

书上的例子:

#include using namespace std;  int main() { int val1 = 512, val2 = 1024; ostringstream oss_message; oss_message << "val1:" << val1 << "\n" << "val2: " << val2 << "\n"; cout << oss_message.str() << endl; } 

再学C++ Primer(8)-标准IO库


例子的重点在于int型值自动转换为等价的可打印的字符串。

2012-11-9


当前文章:再学C++Primer(8)-标准IO库
文章位置:http://myzitong.com/article/gpihgp.html