c++文件I/O
来源:互联网 发布:千方百剂医药软件破解 编辑:程序博客网 时间:2024/05/21 17:18
一、简单的文件输入和输出
#include <iostream>#include <fstream>#include <string>using namespace std;int main(){ //让程序写入文件 //1、创建ofstream 对象 //2、将该对象与对应的文件关联 //3、输出到文件 //4、关闭文件 string filename; cin>>filename; //c_str() 返回一个指向字符串的指针 //如果filename是c字符串格式,可以直接传参数 ofstream fout(filename.c_str()); fout<<"This is c ++ io test !\n"; fout.close(); //让程序从文件读取数据 //1、创建一个ifstream对象管理输入流 //2、将该对象与对应的文件绑定 //3、以使用cin的方式,(注意:是方式,不是cin),使用该文件 //4、关闭文件 ifstream fin(filename.c_str()); cout<<"Here are the content of "<<filename<<":\n"; char ch; while(fin.get(ch))//从文件读取字符 cout<<ch;//输出到屏幕 fin.close(); return 0;}
二、状态检查和is_opne()
较新的c++提供了 检查文件是否被打开的方法 is_open(),可以检查出是否以不合适的文件模式打开失败
三、打开多个文件
1、如果需要同时打开多个文件,则必须为每一个文件创建一个流。
2、如果需要同时打开一组文件,可以只打开一个流。首先创建ifstream对象,然后使用open()方法将流与这个文件关联起来
#include <iostream>#include <fstream>#include <string>using namespace std;int main(int argc,char**argv){ ifstream fin; char ch; int total = 0; for(int i = 0; i<argc; i++) { fin.open(argv[i]); if(!fin.is_open()) { cerr<<"can't open the file"<<argv[i]<<endl; fin.clear(); continue; } int temp = 0; while(fin.get(ch)) { temp++; } cout<<total<<" characters in files "<<argv[i]<<endl; total += temp; fin.clear(); fin.close(); } cout<<"Total characters of the file are "<<total<<endl; return 0;}
四、文件模式
文件模式描述的是文件将被如何使用:读、写、追加等。在使用流与文件关联时,还是open函数,都可以指定文件模式的第二个参数
ios_base类定义了openmode类型,用于表示模式
常量含义ios_base::in打开文件,便于读取ios_base::out打开文件,以便写入ios_base::ate打开文件,并移到文件尾ios_base::app追加到文件尾ios_base::trunc如果文件存在,则截短文件,即把文件内容长度截短为0,相当于删除文件已有的内容ios_base::binary二进制文件
五、追加文件,即在一个文件的末尾追加数据
#include <iostream>#include <fstream>#include <string>#include <cstdlib>using namespace std;void AddToFile(string filename){ //首先显示已有内容 char ch; ifstream fin; fin.open(filename); if(fin.is_open()) { while(fin.get(ch)) cout<<ch; fin.close(); } //然后追加文档 ofstream fout(filename,ios::out | ios::app); if(!fout.is_open()) { cout<<"Can't open file !"<<endl; exit(EXIT_FAILURE); } string content; while(getline(cin,content) && content.size()>0) { fout<<content<<endl; } fout.close();}int main(){ const char* filename = "test.txt"; AddToFile(filename); return 0;}
六、什么是二进制文件,什么是文本文件
- 文本文件格式是指将所有的内容甚至是数字都存储为文本
- 二进制格式指的是存储值的计算机内部表示。也就是说,计算机不是存储字符,而是存储这个值的64位double表示
- 对于字符来说,二进制表示与文本表示是一样的,即都是字符的ASCII码的二进制表示,对于数字来说,二进制表示与文本表示有很大的差别
- 文本模式便于读取
- 二进制文件对于数字来说比较精确,因为它存储的是值的内部表示,因此不会有转换误差和舍入误差
- 二进制格式保存数据的速度更快,并可以大块的存储数据,占用的空间也比较小
- 不同平台的二进制存储方式有所不同,即有可能在一个系统上的二进制文件在另一个平台上打不开
八、使用二进制存储数据时,可以使用成员函数 write
0 0
- linux文件设备与I/O:C标准I/O函数与无缓冲I/O
- C的文件I/O函数
- 步步LINUX C--文件I/O操作
- C语言标准I/O文件操作
- C语言I/O文件操作总结
- C/C++文件I/O操作
- [C] 文件I/O内幕——《C Primer Plus》
- C++I/O操作
- c++I/O流
- 标准 C I/O
- C++I/O技术
- c++I/O操作
- C之I/O
- C标准I/O
- 标准 C I/O
- 标准C I/O
- objective-c I/O
- C++I/O输入输出
- Ubuntu tomcat7+Eclipse开发、部署servlet ----开发篇
- 日期插件My97DatePicker的基本使用
- Ubuntu tomcat7+Eclipse开发、部署servlet ----部署篇
- 2015阿里共享事业部面试题
- 7.3 图示RFID系统信号的通信过程
- c++文件I/O
- 收音机练习题感受
- 几种结构体定义的区别
- 程序在内存中的分布
- 黑马程序员——java基础——JDK1.5新特性
- 【Java.JDBC/ORM】Oracle JDBC版本区别
- android权限大全(整理)
- Ubuntu 下用ODBC链接 Vertica
- 注入(二):修改导入表(c++)