C++ primer学习笔记 第8章

1.C++中 父类为基类base class,继承类为 派生类derived class。

2.IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream 定义读写已命名文件的类型,sstream定义的类型用于读写存储在内存中的string对象。

3.

4.若函数有基类类型的引用形参时,可以给函数传递其派生类型的对象。

5.流类 所读写的是由 char类型组成的流。

6.标准库类型不允许做复制 或赋值操作。1).不能存储在vector容器中。因为只有支持复制的元素类型可以存储在vector或其他容器类型里     2).形参或返回类型 也不能为流类型。如果需要传递或返回IO对象,则必须传递或返回指向该对象的指针或引用。

7.对IO对象的读写会改变它的状态,因此引用必须是非const的。

8.

9.if( cin )直接检查流状态; while ( cin>>word ) 检测条件表达式返回的流。

10.所有流对象都包含一个条件状态成员,该成员由setstate和clear操作管理。setstate和clear操作用于改变条件成员的状态。

      clear操作将条件重设为有效状态。setstate操作可打开某个指定的条件,用于表示某个问题的发生,除了添加的标记状态,会保留其他已存在的状态变量不变。

11.每个IO类定义了三个iostate类型的常量值,分别表示特定的位模式。badbit 、failbit 、eofbit

12.rdstate成员函数返回一个iostate类型的值,该值对应于流当前的整个条件状态。

13.缓冲区内容被刷新:1).程序正常结束   2).缓冲区可能满时,写下一个值之前刷新  3).用操纵符显示刷新,比如endl   

     4).每次输出操作执行完,用unitbuf操纵符设置流的内部状态,从而清空缓冲区   

     5).将输出流与输入流关联tie起来,在读输入时将刷新其关联的输出缓冲区;可用istream或ostream对象调用,使用一个指向ostream对象的指针形参。

            一个ostream对象每次只能与一个istream对象绑在一起。若在调用tie函数时传递实参0,则打破捆绑。cin.tie(&cout);cin.tie(0);

14.操作符:endl 输出换行符并刷新缓冲区;ends插入空字符null并刷新缓冲区;flush不添加任何字符 刷新流。

15.unitbuf刷新所有输出,nounitbuf操作符将流恢复为使用正常的、由系统管理的缓冲区刷新方式。

16.文件流对象使用:调用open成员函数将已存在的fstream对象与特定文件绑定。

17.打开文件后,通常要检验打开是否成功。

     if( !infile )

     {

cerr<<"error"<<ifile<<endl;

return -1;

      }

18.如果要把fstream对象与另一个不同的文件关联,则必须先关闭现在的文件,然后再打开另一个文件。

     ifstream infile("in");

    infile.close;

    infile.open("next");

19.若打算重用已存在的流对象,那么while循环必须在每次循环时记得关闭close和清空clear文件流。

20.如果需要重用文件流读写多个文件,必须在读另一个文件之前调用clear清除该流的状态。

21.

     out、app、trunc模式只能用于指定与ofstream或fstream对象关联的文件;in模式只与ifstream或fstream对象关联的文件。

     默认时,ifstream以in模式打开做读操作;ofstream以out模式打开可写。以out模式打开的文件会被清空,丢弃该文件存储的所有数据(等效为ofstream对象同时指定out与trunc);fstream对象同时以in和out模式打开。

22.对于用ofstream打开的文件,要保存文件中已存在的数据,唯一的方法是显示的指定app模式打开。 ofstream appfile("file2",ofstream::app);

23.fstream对象以in和out模式同时打开时不清空。

24.模式是文件的属性而不是流的属性。

25.只要调用open函数,就要设置文件模式,可以显示也可以隐式。若没有指定,则用默认。

26.有效的模式组合极其含义:


 以上组合都可以添加ate模式以改变文件打开时的初始定位,定位于文件末尾处。

27.一个打开并检查输入文件的程序

     ifstream&  open_file(ifstream &in,const sring & file)

    {

in.close();

in.clear();

in.open(file.c_str());

return in;

}

 &:返回一个打开的文件对象的引用。 

如果不用引用,那么返回的就是一个拷贝。对拷贝的操作不会影响实际的对象。


28.sstream定义了一个有string形参的构造函数,将string类型的实参复制给stringstream对象。对stringstream的读写操作实际上读写的就是该对象中的string对象。

      还定义了str的成员,用来读取或设置stringstream对象所操纵的string值。

29.stringstream对象不能使用open和close函数,而fstream对象则不允许使用str。


30.处理每行极其每个单词:

     string line,word;

    while(getline(cin,line))

{

istringstream stream (line);//绑定stream to line

while(stream>>word)         //从line中读取单词

{

}

}

31.使用输入操作符读string时,空白符将会忽略。

32.派生类对象可当作基类对象使用。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值