读写文本文件

时间:2023-02-11 08:45:48

编写算法的时候经常会从文本中读取配置参数,这里写一篇文章记录读取文本文件的方法(使用流操作实现,c语言实现的方法,这里就先不做介绍,如果以后用到了,再写文章记录)。

1.头文件

#include <fstream>
如果使用string,还需要包含string类的头文件     
#include <string>

2.打开指定的文件

void open ( const char * filename,  
            ios_base::openmode mode = ios_base::in | ios_base::out );  
打开文件的方式:

ios::in 输入(读),打开文件
ios::out 输出(写),打开文件
ios::ate 初始位置在文件尾
ios::app 往文件末尾追加内容
ios::trunc 如果文件存在,则先删除文件
ios::binary 二进制方式打开文件
示例:

ifstream fin(filename, ios::in);
if (!fin.is_open())
{
	cout<<"[error] load "<<filename<<" file falied!"<<endl;
	return -1;
}
3.逐行读取内容

string strLine;
while(!fin.eof())
{
	getline(fin,strLine);
}
4.读文件示例
int read_file(string filename)
{
	ifstream fin(filename, ios::in);
	if (!fin.is_open())
	{
		cout<<"[error] load "<<filename<<" file falied!"<<endl;
		return -1;
	}
	string strLine;
	while(!fin.eof())
	{
		getline(fin,strLine);
		
		int ret = strLine.find(';');

		string image_name = strLine.substr(0,ret);
		string label_name = strLine.substr(ret+1,strLine.length()-ret);
		cout<<"data = "<<image_name.c_str()<<" ; label = "<<label_name.c_str()<<endl;

	}
	return 0;
}

5.写文件示例

int write_file(string filename)
{
	ofstream fout(filename,ios::out | ios::app);
	if (!fout.is_open())
	{
		cout<<"open/create "<<filename.c_str()<<" failed!"<<endl;
		return -1;
	}

	fout<<"123456"<<endl;

	fout.close();
	return 0;
}
6.int转string

 
#inlcude <strstream>
int int2string()
{
	int data = 123;
	string str_data;	
	strstream ss;
	
	ss<<data;
	ss>>str_data;
	cout<<str_data.c_str()<<endl;
}