2023.12.26 c++文件读写操作 fileoption
2023-12-26 23:15:16
fstream提供了三个类,用来实现c++对文件的操作(文件的创建、读、写)
ifstream -- 从已有的文件读入
ofstream -- 向文件写内容
fstream - 打开文件供读写
文件打开模式:
ios::in 只读
ios::out 只写
ios::app 从文件末尾开始写,防止丢失文件中原来就有的内容
ios::binary 二进制模式
ios::nocreate 打开一个文件时,如果文件不存在,不创建文件
ios::noreplace 打开一个文件时,如果文件不存在,创建该文件
ios::trunc 打开一个文件,然后清空内容
ios::ate 打开一个文件时,将位置移动到文件尾
文件指针位置在c++中的用法:
ios::beg 文件头
ios::end 文件尾
ios::cur 当前位置
常用的错误判断方法:
good() 如果文件打开成功
bad() 打开文件时发生错误
eof() 到达文件尾
文件写入
//用来测试文件的读写操作,输入输出文件均为保存在程序根目录下的txt文件
void traj_out(const char* path,vector<vector<double>> &out_vector, int dof)
{
// cout<<"******************************************"<<endl;
cout<<"存储文件 -->"<<path << endl;
ofstream outfile;//outfile也是一个文件流,用来操作输出文件
outfile.open(path,ios::trunc); //打开输出文件
for (vector<double>::size_type i=0;i!=(out_vector.size());i++)
{
for(int j=0;j<dof;j++)
{
outfile<< out_vector[i][j] << " " ;
}
outfile <<endl;
}
outfile.close(); //关闭输出文件
}
文件读取
//用来测试文件的读写操作,输入输出文件均为保存在程序根目录下的txt文件
vector<vector<double>> traj_in(string *path, int dof)
{
ifstream infile; //infile是一个文件流,因此其实还是对流进行的操作
vector<vector<double>> data_vector; //用来保存文本中数据的向量
infile.open(*path); //打开输出文件
string indata;
double temp;
if(!infile) //判断是否存在ifstream infile
{
cout<<"读入文件 : " << *path << " 不存在"<<endl;
}
if (infile.is_open()) //判断文件流是否处于打开状态
{
int line = 1;
while (infile.good()&&!infile.eof())
{
vector<double> group;
// cout << " line : " << line << endl;
for(int i =0;i<dof;i++)
{
if(infile.good()&&!infile.eof())
{
infile>>indata;
istringstream strstream(indata);
strstream>>temp;
// cout << temp <<endl;
}
else
{
// cout<<"read file finished " << endl;
break;
}
group.push_back(temp);
}
line = line+1;
if(group.size()==dof)
{
data_vector.push_back(group);
//将数据读入到data_vector
}
else break;
}
}
infile.close();
cout << " 读取完成。 size : " << data_vector.size() << endl;
return data_vector;
}
文章来源:https://blog.csdn.net/HITORANGE/article/details/135232216
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!