C++ 读取文件内容,分割出字符串
来源:互联网 发布:淘宝上找iphone可靠吗 编辑:程序博客网 时间:2024/05/29 10:59
在c++/c等,经常有需要从文件读取参数值的场景,非常常用,实现的细节主要有,读取文件内容/行,按要求分割成字符串,或者编成键值对供调用。
1.如果是每行都是字符串+空格+字符串形式的话,
最简单的是采用输出输入流的方法,比如伪代码:
ifstream fsf(文件路径);//只能读取一行,多行的话用循环,以fsf.eof,fsf.good或者确定行数为终止条件getline(fsf, sline);stringstream ss;string a,b,c;ss<<sline;ss>>a>>b>>c;fsf.close();
如果sline = “x y z”;
那么经过上述操作后,a=x; b=y; c=z;
关于打开文件的ifstream的类,还有fstream,ofstream,参考这篇博文吧;或者:http://www.cplusplus.com/doc/tutorial/files/
2. 也可以采用其他方法,比如转为char 型,或者就用char型,然后用strtok函数,string char 型,调用c_str() ,用法strtok(char *,分隔符),详见链接例子。
另外string还有 find/substr()方法可用,用法 substr(pos,len);
3.文件内容丰富的,比如有注释,参数采用键值对的形式说明,比如:dir=./src/parameters.txt之类的,提供一个范例:
#include <string>#include <map>using namespace std;//定义一个读取参数文件的类class ParameterReader{public: ParameterReader( string filename = "/home/lab/CalAngle/parameters.txt") { ifstream fin(filename.c_str()); if (!fin) { cerr<<"parameter file misseed"<<endl; return; } while(!fin.eof()) //eof(): 如果读文件到达文件末尾,返回true。else :fail() etc. { string str; getline(fin,str); if (str[0] == '#') { // 以‘#’开头的是注释 continue; } int pos = str.find("="); if (pos == -1) continue; // 找到"="的位置,以此为界,前面是键,后面是值 string key = str.substr( 0, pos ); string value = str.substr( pos+1, str.length() ); data[key] = value; //include all bad situations if ( !fin.good() ) break; } } //接口函数,提供“键”,对象调用这个方法就可以获得“值” string getData(string key) { map <string,string>::iterator iter = data.find(key); if (iter == data.end()) { cerr<<"Parameter name "<<key<<"not found!"<<endl; return string ("NOT FOUND!"); } return iter->second; //second is the value, first is the key }public: map <string,string> data;};
调用方法示例:
ParameterReader pd; string rgbDir = pd.getData("rgb_dir");
parameters.txt里面的内容示例:
# 等号附近没有空格# 数据所在目录rgb_dir=/home/lab/CalAngle/data/fr1_desk/rgb/# 最小匹配数量min_good_match=10...
阅读全文
0 0
- C++ 读取文件内容,分割出字符串
- 从txt文件读取内容并进行字符串分割
- C读取文件内容
- 【读取文件 动态数组 分割字符串 】
- c++ 读取txt文件,split分割字符串
- MFC Unicode文件读取 分割字符串
- Java连接数据库+连续读取文件夹下txt文件+读取出txt文件后字符串简单分割连接处理+导入jar包
- 读取文件行并分割行中字符串:C/C++以及python实现
- 二进制读取文件内容[C#]
- C格式读取文件内容
- C语言读取文件内容
- c语言 读取文件内容 文件写入
- 读取Htm文件内容到字符串
- java读取文件内容转成字符串
- java读取文件内容为string字符串
- C#-XML文件提取字符串+字符串存为XML文件+创建XML(自定义节点)文件+读取节点内容
- C语言读取文件内容统计代码
- C语言读取文件内容,按行读
- Java41
- 读取Properties配置文件
- 确认框confirm
- Java44
- HDU-1022
- C++ 读取文件内容,分割出字符串
- Java44
- Android Studio如何导出可供Unity使用的aar插件详解
- 判断手机横竖方向,加载友好提示
- 大四学生会玩:拍“恐怖”毕业照走红网络,堪比惊悚片
- Java45
- 【Spring】一个简单的方法
- 商城项目实战02:使用maven tomcat插件启动web工程
- 幂等策略