ofstream out_stream;
out_stream.open("ipconfig.ini",ios::ate|ios::binary);
out_stream.seekp(0,ios::beg);
out_stream<<IP<<endl;
out_stream.close();
我已经把指针定位到文件头了,然后每次插入的时候总是覆盖掉原来的所有记录,可是ios::ate不是追加记录吗?
求解答~
8 个解决方案
#1
ate:to seek to the end of a stream when its controlling object is first created.
Open后的out_stream.seekp(0,ios::beg);本来打开时已近把写的位置定位为文件末尾了,但是你接下去又把写的指针定位到文件开始处了,所以就覆盖了。把这句话去掉就可以了。
Open后的out_stream.seekp(0,ios::beg);本来打开时已近把写的位置定位为文件末尾了,但是你接下去又把写的指针定位到文件开始处了,所以就覆盖了。把这句话去掉就可以了。
#2
out_stream.seekp(0,ios::beg);
#3
你既然想追加干嘛还要再out_stream.seekp(0,ios::beg);到最顶端呢
#4
lz可以先把整个文件的内容读到内存,然后再要添加的头的后面追加上整个文件的内容,笨方法。
#5
打开方式改为追加打开
#6
追加的内容有时候放在头部会更好,比如“文件里元素的个数”如果放在文件尾那就没什么意义了。
#7
可能只有这个办法。
是ios::ate不是追加记录吗?
追加是加在末尾。
你这是插入。
要想随机插入,那要随机文件,象数据库才可以吧?
有序文件就有这个缺点。
#8
ios::ate是把指针定位在文件末尾吧。
我自己目前能做到的也只有将整个文件读入内存,然后在头部添加数据后再覆盖回去。
我自己目前能做到的也只有将整个文件读入内存,然后在头部添加数据后再覆盖回去。
#1
ate:to seek to the end of a stream when its controlling object is first created.
Open后的out_stream.seekp(0,ios::beg);本来打开时已近把写的位置定位为文件末尾了,但是你接下去又把写的指针定位到文件开始处了,所以就覆盖了。把这句话去掉就可以了。
Open后的out_stream.seekp(0,ios::beg);本来打开时已近把写的位置定位为文件末尾了,但是你接下去又把写的指针定位到文件开始处了,所以就覆盖了。把这句话去掉就可以了。
#2
out_stream.seekp(0,ios::beg);
#3
你既然想追加干嘛还要再out_stream.seekp(0,ios::beg);到最顶端呢
#4
lz可以先把整个文件的内容读到内存,然后再要添加的头的后面追加上整个文件的内容,笨方法。
#5
打开方式改为追加打开
#6
追加的内容有时候放在头部会更好,比如“文件里元素的个数”如果放在文件尾那就没什么意义了。
#7
可能只有这个办法。
是ios::ate不是追加记录吗?
追加是加在末尾。
你这是插入。
要想随机插入,那要随机文件,象数据库才可以吧?
有序文件就有这个缺点。
#8
ios::ate是把指针定位在文件末尾吧。
我自己目前能做到的也只有将整个文件读入内存,然后在头部添加数据后再覆盖回去。
我自己目前能做到的也只有将整个文件读入内存,然后在头部添加数据后再覆盖回去。