17.文件操作

来源:互联网 发布:傲视天地宝石进阶数据 编辑:程序博客网 时间:2024/05/16 15:33

1.cin 和 cout是两个独立的输出流,他们的格式自己定义,设定了格式之后则对后面起作用,需要改正则重设。可以在cin cout的后面直接添dec等控制符,也可以用setiosflags(ios::格式控制符)来实现。
ios::
skipws
left
right
internal
showpoint
showpos
scientific
sixed

2.输出宽度可以用cout.width(数字)或cout<<setw(int n)<<num;实现。setw()函数需要包含iomanip头文件。fill(char c)可以用来填充,cout.fill('#')设置填充为#,默认为空格。fill()可以下面一直由它控制,但是setw()则只是对于就近这个输出。

3.重定向输入“<”,重定向输出“>”,如dir>a.txt会把当前目录信息输出到a.txt文件下。

4.文件流
所有设备可以抽象为文件。文本文件,二进制文件。
打开文件方式:
ios::
in
out
ate //at the end
app //append
trunc //clear datas
nocreate //与读写方式同时使用
noreplace //建立新文件
binary //
以上方式结合使用的时候用“|”连接。

可以定义文件流对象的时候打开文件,也可以定义好之后用函数打开。打开成功,返回真值,失败则返回假值。
ifstream infile;
if(!infile.open("c://dir"))
{
 cerr<<"can't open file:dir"<<endl;
 exit<<(1);
}

文件的读写操作可以使用提取、插入运算符(重载),或者用成员函数。

关闭文件infile.close();//取消了与文件的关联,而infile对象还是存在的哦,可以inifle.open("directory")来关联另外的文件。

当从文件取数据时,用while(infile.get(ch)) 或while(infile>>ch),是否文件除了EOF之外,文件中没有其他为ASCII的0值的?文件与char[]类似,只是文件更大。

文件的2种形式,二进制、文本。如果是说明了ios::binary则是二进制,否则为binary.

二进制的读写:
1.read(** char*,int)int指明了大小,以字节计算。
2.write(const *char*, int)
3.eof()用于读取数据时判断是否到达末尾,是则0,否则非零。

文件的随机访问
1.seekg()用于移动输入文件流中的指针,seekp()函数用于移动输出文件流指针。
参数(streampos ,ios:seek_dir);
seek_dir:
ios::beg 起始位置作为参照点
cur  当前位置作为参照点
end  结尾位置作为参照点
g和p分别表示get and put.
outfile.seekp(3*sizeof(int),ios::beg);结果是,定位在第4个数据。

2.返回文件指针值
tellg()
tellp();