包含头文件
#include<fstream>(不带扩展名“.h“)
读写文件:ifstream(读)、ofstream(写)、fstream(读写):#include<ifstream>;#include<ofstream>;#include<fstream>,分别从istream、ostream、iostream中引申而来的,所以fstream的对象可以使用其父类成员来访问数据。
获取文件名
geetline(cin,filename,‘\n’);方式得到用户输入的用户名,其中filename为String类型;与同控制台(console)交互同样的成员函数(cin&cout)来进行输入输出。
#inclulde<iostream>
#include<fstream>//文件头文件
#include<String>
int main()
{
ifstream in;//ifstream读文件
string filename;//文件名
getline(cin, filename, '\n');//获取文件名,也可以使用cin>>filename;但是不能获取空格
in.open(filename);
if(!in)//或if_open()
{
cerr<<"打开文件出错"<<endl;
return 1;
}
//逐个读取字符
char ch;
while(!in.eof())//到达文件尾时返回true
{
in.read(&ch, 1);
cout<<ch;
}
in.close();//必须关闭文件
}
ofstream out("out.txt");
if (out.is_open())
{
out << "This is a line.\n";
out << "This is another line.\n";
out.close();
}
char buffer[256];
ifstream in("test.txt");
if (! in.is_open())
{ cout << "Error opening file"; exit (1); }
while (!in.eof() )
{
in.getline (buffer,100);
cout << buffer << endl;
}
open函数
<span style="font-family:Times New Roman;font-size:16px;">
public member function
void open ( const char * filename,
ios_base::openmode mode = ios_base::in | ios_base::out );
void open(const wchar_t *_Filename,
ios_base::openmode mode= ios_base::in | ios_base::out,
int prot = ios_base::_Openprot);
</span>
参数
filename | 操作文件名 |
mode | 打开文件的方式 |
prot | 打开文件的属性 |
在ios类中文件的打开方式
ios::in | 为输入(读)而打开文件 |
ios::out | 为输出(写)而打开文件 |
ios::ate | 初始位置:文件尾 |
ios::app | 所有输出附加在文件末尾 |
ios::trunc | 如果文件已经存在则先删除已存在文件 |
ios::binary | 二进制方式 |
方式可以使用”|“来隔开进行组合使用:in(”文件名.txt“, ios::in | ios::out | ios::binary);
ios类中打开文件的属性定义
0 | 普通文件,打开操作 |
1 | 只读文件 |
2 | 隐含文件 |
4 | 系统文件 |
属性可以使用”+“来隔开进行组合使用
使用open默认方法(直接对流对象进行文件操作)
<span style="font-family:Times New Roman;font-size:16px;">
ofstream out("...", ios::out);
ifstream in("...", ios::in);
fstream foi("...", ios::in|ios::out);
</span>
标志性验证(bool)
bad():过程中出错,返回true,如设备已满
fail():在bad的功能基础上,加上格式错误时也返回true
eof()
good():以上函数返回true时,函数返回false
(重置成员函数所检查的状态标志,使用 .clear())
参考:【http://blog.csdn.net/kingstar158/article/details/6859379/】
来源:oschina
链接:https://my.oschina.net/u/2977387/blog/794581