【C++】读取文件

与世无争的帅哥 提交于 2019-12-05 18:01:43

 

包含头文件

#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/

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!