文本文件
写文件
#include<fstream>头文件
创建流对象 ofstream ofs;写 fstream fs;读写
ofs.open();打开文件 如ofs("abc.txt",ios::out) 或ofs("abc.txt",ios::out|ios::ate)(这里复用) 如果没有abc文件,则创建
ofs<<"...";写入文件 ofs.close();关闭文件
|
ios::in |
为读文件而打开文件 |
ios::out |
写文件(覆盖) |
ios::ate |
在文章尾写文件 |
ios::app |
追加方式写文集 |
ios::trunc |
删除文件再创建 |
ios::binary |
二进制方式 |
读文件
#include<fstream>头文件
创建流对象 ifstream ifs;读
ifs.open("abc.txt",ios::in);如上 if(ifs.is_open())接着判断,如果有则返回1 { ifs>>...输入流>>,输出流<< } while( (c=ifs.get())!=EOF) {
}表示读到结尾结束 ifs.close();
|
相关函数操作
ifs.seekg(36*(a-1),ios_base::beg);用于写操作 ofs.seekp(36*(a-1),ios_base::beg);用于读取操作 用于移动文件指针到36(a-1)的位置,即跳过36*(a-1)个元素在进行输入。 getline(ifs,str,'\n'); 读取一行,直到遇到换行符(\n)。输入的对象必须是string类型,即例子中的str。可以指定停止读取的位置,默认为'\n'。 ios_base::beg:从文件开始处计算指针位置 ios_base::cur:从当前位置计算指针位置 ios_base::end:从文件末尾计算指针位置 ifs.tellg();获取文件指针位置 ifs.peek();查看文件指针位置 ifs.eof();判断文件是否结束 ifs.clear();清空错误
|
读/写文件问题
如果出现无法读取文件:
- 确保文件存在
- 确保文件名正确(可以替换成绝对路径,如c++/实训/文件/solve.txt)
- 确保文件权限足够(一般用不到)
- 确保文件编码正确(一般用不到)
对文件定点删除插入
char buffer[1024]; while (inFile.read(buffer, sizeof(buffer))) { outFile.write(buffer, inFile.gcount()); }buffer为缓冲区,sizeof(buffer)为缓冲区大小 删除原文件并将临时文件重命名为原文件名 std::remove("example.txt");删 std::rename("temp.txt", "example.txt");覆盖
|
注意:这个示例假设文件中至少有10个字节。在实际使用时,请确保文件大小足够,以避免越界访问。