编写算法的时候经常会从文本中读取配置参数,这里写一篇文章记录读取文本文件的方法(使用流操作实现,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; }