c++中有关文件流读写的粗浅认识

c++中使用文件流读写
char ch;
ifstream fin(path.c_str()) :使fin与一个文件相关联 fin(路径名)
等价于: ifstream fin; fin.is_open(path.c_Str)
其中:fin 只接受c风格的字符串
相当于打开文件,读出指定文件里的内容(文件已经存在)

ofstream fout(文件路径名) 打开文件  
对象与文件相关
将内容写到指定文件中  如果文件不存在,会创建一个新的


fin.get(ch)
是一个字符一个字符的把内容读到文件中


读写的时候,提供2种方法:

方法一:

while(fin.get(ch)){cout<<ch;fout<<ch;},这样会跳过所有的空格字符。

方法二:
while(fin){fin.get(ch);fout<<ch;},这样读写与方法一相比会多复制一个字符,即文件的最后一个字符。


第一种方式,进行一次读取,就会进行一次判断,

一旦返回出现错误,就不会再进行读写了。


第二种方式,也会判断。
但是,花括号中进行了两次操作。当fin.get(ch)出现错误时,无法及时停下。fout<<ch 就会出现错误。假如最后一个读完了,一切正常。但是,这个正常只能到fin.get(ch)这一句语句。因为没有中断语句,fout<<ch会接着执行。但是,已经到了最后一个字符了。后面没有字符了。虽然,fout有"喜新厌旧"的性格,但是,没有新的啦,那只能读旧的了。那就是文本的最后一个字符:‘\n’。


最后,在文件打开后,请不要忘记及时关闭:fin.close()和fout.close().

可能有人会想到析构函数来执行这个关闭动作,但是,如果进行重复的读取的话,使用析构函数未免欠妥。并且还有考虑作用域问题。太麻烦。



你可能感兴趣的:(文件流)