c++一行行读取文件(c++读取文件操作和写入文件)
c++读取文件操作和写入文件
在C++中与读取文件和写入文件简单操作有关的类分别有ifstream(文件读入) 、ofstream(文件写出) 、fstream (文件读入和写出) 。
名称 作用 ifstream 文件读入 ofstream 文件写出 fstream 文件读入和写出对于文件操作操作输入输出类中具有一个open的函数用来打开文件使用的 。其原型为:
void open(const char* filename,int mode,int access);
其中各个参数的含义如下表: 参数 作用 filename 需要打开的文件地址名称 mode 打开文件的方式 access 打开文件的属性其中打开文件的方式在类中ios中定义的常用值为下表 ,在使用过程中可以用“| ”把以上属性连接起来表或的关系 ,如ios::out|ios::binary
mode常用的值 作用 ios::app 以追加的方式打开文件 ios::ate 文件打开后定位到文件尾 ,ios:app就包含有此属性 ios::binary 以二进制方式打开文件 ,缺省的方式是文本方式。两种方式的区别见前文 ios::in 文件以输入方式打开(文件数据输入到内存) ios::out 文件以输出方式打开(内存数据输出到文件) ios::nocreate 不建立文件 ,所以文件不存在时打开失败 ios::noreplace 不覆盖文件 ,所以打开文件时如果文件存在失败 ios::trunc 如果文件存在 ,把文件长度设为0打开文件的属性取值是:
access常用的值 作用 0 普通文件 ,打开访问 1 只读文件 2 隐含文件 4 系统文件再打开文件的过程中 ,仅需要调用open函数就可以打开文件并对文件内容进行操作 。如
查看代码
由上面可以看出在写入和写出时,用到了一个重要的运算符插入器(<<) 。其实在stream类中存在两个重要的运算分别是插入器(<<)和析取器(>>)在c++中cin和cout经常可以被看到它主要实现的I/O操作 。下面对插入器和析取器进行解释:
1、插入器(<<)
向流输出数据 。比如说系统有一个默认的标准输出流(cout) ,一般情况下就是指的显示器 ,所以,cout<<"Write Stdout"<<\n;就表示把字符串"Write Stdout"和换行字符(\n)输出到标准输出流 。
2 、析取器(>>)
从流中输入数据 。比如说系统有一个默认的标准输入流(cin) ,一般情况下就是指的键盘 ,所以,cin>>x;就表示从标准输入流中读取一个指定类型的数据 。同时文件操作完成后需要对文件进行关闭 ,让文件进行保存 。使用myfile.close();myfile为你定义这个操作名称 。
使用者在操作O的时候 ,常常使用到文件指针 ,通俗来讲就是你在编辑文本文件时插入文本的位置 ,被称为文件指针。对文件指针的位置我们可以通过seekg函数进行操作
文件指针位置在c++中的用法:
seekg常用的值 含义 ios::beg 文件头 ios::end 文件尾 ios::cur 当前位置举个栗子:
file.seekg(0,ios::beg); //让文件指针定位到文件开头
file.seekg(0,ios::end); //让文件指针定位到文件末尾
file.seekg(10,ios::cur); //让文件指针从当前位置向文件末方向移动10个字节
file.seekg(-10,ios::cur); //让文件指针从当前位置向文件开始方向移动10个字节
file.seekg(10,ios::beg); //让文件指针定位到离文件开头10个字节的位置
常用的错误判断方法:
good() 如果文件打开成功
bad() 打开文件时发生错误
eof() 到达文件尾
文件操作的代码解释
#include<iostream> #include <string> #include<fstream> #include<istream> using namespace std; int main() { ofstream outfile("F:\\zmxs\\date.txt",ios::app); if(outfile.good()) { outfile<<"写入!"<<endl; outfile.close(); } string temp; ifstream myfile("F:\\zmxs\\date.txt"); ///直接使用while会读取不到第一行 do { myfile >> temp; cout<<temp<<endl; }while(getline(myfile,temp)); myfile.close(); }创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!