利用C++如何覆盖或删除指定位置的文件内容
前言 最近在工作中遇到一个问题,需要覆盖或者删除指定位置的文件内容,发现网上这方面的资料较少,无奈只能自己解决,下面将自己解决的方法分享给大家,方便大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 一、覆盖指定位置的文件内容 我们经常使用ofstream或者fstream可写文件,使用ifstream可以写文件,但需要设置文件的打开状态为iOS::out。C++中IO流打开模式使用位掩码来表示。 IO流打开模式有:
些常数在ios_base类定义为public成员。因此,可以直接以类名字加作用域运算符访问(如 ofstream在打开文件时默认清空文件所有内容。如果使用 int main(){ fstream fout; fout.open("hello.txt",fstream::binary | fstream::out | fstream::app); pos=fout.tellp(); fout.seekp(-5,ios::end); fout.write("####",4); fout.close(); return 0; } 上面的操作虽然使用了文件指针偏移操作 fout.open("hello.txt",fstream::binary | fstream::out | fstream::in); //或 fstream fout("hello.txt",fstream::binary | fstream::out | fstream::in); 二、删除指定位置的文件内容 很遗憾,C++的文件流并没有提供这样的功能,我们只能先读取保留的内容,再以截断模式写回原文件[3]。 总结 好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。 参考文献 [1]C++ overwriting data in a file at a particular position [2]std::ios_base::openmode [3]overwriting some text in a file using fstream and delete the rest of the file (编辑:重庆站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |