如何java 读取ini文件一个.ini文件

正则模拟读取INI文件的步奏详解-js教程-PHP中文网QQ群微信公众号还没有收藏正则模拟读取INI文件的步奏详解这次给大家带来正则模拟读取INI文件的步奏详解,使用正则模拟读取INI文件的有哪些,下面就是实战案例,一起来看一下。废话不多说了,直接给大家贴代码了,具体代码如下所示:#include &stdio.h&
#include &sstream&
#include &iostream&
#include &fstream&
#include &regex&
void Trim(char * str);
void lTrim(char * str);
void rTrim(char * str);
// 测试sscanf 和 正则表达式
// sscanf提供的这个扩展功能其实并不能真正称为正则表达式,因为他的书写还是离不开%
// []表示字符范围,{}表示重复次数,^表示取非,*表示跳过。所以上面这个url的解析可以写成下面这个样子:
//char url[] = &dv://192.168.1.253:&
//sscanf(url, &%[^://]%*c%*c%*c%[^:]%*c%d%*c%d%*c%d&, protocol, ip, port, chn, type);
//解释一下
//先取得一个最长的字符串,但不包括字串 ://,于是protocol=&dv\0&;
//然后跳过三个字符,(%*c)其实就是跳过 ://
// 接着取一个字符串不包括字符串 : ,于是ip = 192.168.1.253,这里简化处理了,IP就当个字符串来弄,而且不做检查
// 然后跳过冒号取端口到port,再跳过 / 取通道号到chn,再跳过 / 取码流类型到type。
// c语言实现上例
void test1()
char url[] = &dv://192.168.1.253:&;
char protocol[10];
char ip[17];
sscanf(url, &%[^://]%*c%*c%*c%[^:]%*c%d%*c%d%*c%d&, protocol, ip, &port, &chn, &type);
printf(&%s, %s, %d, %d, %d\n&, protocol, ip, port, chn, type);
// 读取ini里某行字符串, 得到: hello world!
// 正常串1: -claim=&hello world!&
// 正常串2: claim = &hello world!&
// 正常串3: claim = & hello world!&
// 正常串4: claim_ = hello world!
// 干扰串1: cl-aim = \&hello world!&
// 干扰串2: clai3m = &hello world!\&
// 干扰串3: cla_im = \\&hello world!\&
// 干扰串4: claim ='&hello world!\&
// 干扰串5: claim= @&\nhello world!&
// 干扰串6: claim=L&hello world!&
// 未处理1: claim[1] = 1
// 未处理1: claim[2] = 1
void test2()
char line[1000] = { 0 };
char val[1000] = { 0 };
char key[1000] = { 0 };
FILE *fp = fopen(&1.txt&, &r&);
if (NULL == fp)
printf(&failed to open 1.txt\n&);
while (!feof(fp))
memset(line, 0, sizeof(line));
fgets(line, sizeof(line) - 1, fp); // 包含了每行的\n
printf(&%s&, line);
Trim(line);
// 提取等号之前的内容
memset(key, 0, sizeof(key));
// sscanf使用的format不是正则表达式,不能用 \\s 表示各种空白符,即空格或\t,\n,\r,\f
sscanf(line, &%[^ \t\n\r\f=]&, key);
//sscanf(line, &%*[^a-zA-Z0-9_-]%[^ \t\n\r\f=]&, key);
printf(& key: [%s]\n&, key);
// 提取等号之后的内容
memset(val, 0, sizeof(val));
sscanf(line, &%*[^=]%*c%[^\n]&, val); // 不包含了每行的换行符
Trim(val);
printf(& val: [%s]\n&, val);
// 去除两边双引号
// 插入map
// map[key]=
// string 转 其它类型
// atoi, atol, atof
printf(&\n&);
fclose(fp);
// 上例的C++实现
template&class T1, class T2&
inline T1 parseTo(const T2 t)
sstream &&
sstream &&
sstream.clear();
void test3()
char val[1000] = { 0 };
char key[1000] = { 0 };
ifstream fin(&1.txt&);
while (getline(fin, line)) // line中不包括每行的换行符
cout && line &&
/// 提取等号之前的内容
// 第1组()表示任意个空格字符,第2组()表示单词(可带_或-),
// 第3组()表示1个以上的空格字符(或=),最后以任意字符串结尾
regex reg(&^([\\s]*)([\\w\\-\\_]+)([\\s=]+).*$&);
// 取第2组代替原串
string key = regex_replace(line, reg, &$2&);
cout && & key: {& && key && &}& &&
/// 提取等号之后的内容
// 第1组()表示任意个空格字符,第2组()表示单词(可带_或-),
// 第3组()表示1个以上的空格字符(或=),第4组()表示任意个字符,
// 第5组()表示以任意个空格字符(或回车换行符)结尾。
reg = regex(&^([\\s]*)([\\w\\-\\_]+)([\\s=]+)(.*)([\\s\\r\\n]*)$&);
// 取第4组代替原串
string val = regex_replace(line, reg, &$4&);
cout && & val: {& && val && &}& &&
// 去除两边双引号
// 插入map
// map[key]=
// string 转 其它类型
// int i = parseTo&int&(&123&);
// float f = parseTo&float&(&1.23&);
// string str = parseTo&string&(123);
else // 没有该文件
cout && &no such file& &&
void main()
//test1();
void lTrim(char * str)
len = strlen(str);
for (i = 0; i& i++)
if (str[i] != ' ' && str[i] != '\t' && str[i] != '\n' && str[i] != '\r' && str[i] != '\f')
memmove(str, str + i, len - i + 1);
void rTrim(char * str)
len = strlen(str);
for (i = len - 1; i &= 0; i--)
if ((str[i] != ' ') && (str[i] != 0x0a) && (str[i] != 0x0d) && (str[i] != '\t') && (str[i] != '\f'))
str[i + 1] = 0;
void Trim(char * str)
//先去除左边的空格
len = strlen(str);
for (i = 0; i& i++)
if (str[i] != ' ' && str[i] != '\t' && str[i] != '\n' && str[i] != '\r' && str[i] != '\f')
memmove(str, str + i, len - i + 1);
//再去除右边的空格
len = strlen(str);
for (i = len - 1; i &= 0; i--)
if (str[i] != ' ' && str[i] != '\t' && str[i] != '\n' && str[i] != '\r' && str[i] != '\f')
str[i + 1] = 0;
void Trim(char * str)
lTrim(str);
rTrim(str);
*/相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!推荐阅读:以上就是正则模拟读取INI文件的步奏详解的详细内容,更多请关注php中文网其它相关文章!共3篇794点赞收藏.php.cn&猜你喜欢PHP中文网:独家原创,永久免费的在线,php技术学习阵地!
All Rights Reserved | 皖B2-QQ群:关注微信公众号如何读取一个.ini文件?_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
如何读取一个.ini文件?
&&网页设计
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢"c语言如何读取ini文件"的糗事
你可能感兴趣:
糗事百科为大家收集了很多的c语言如何读取ini文件的糗事,各种关于c语言如何读取ini文件的爆笑经历、尴尬时刻和开心视频,想持续关注c语言如何读取ini文件的糗事就收藏本页吧.
扫码下载糗事百科app没有更多推荐了,
不良信息举报
举报内容:
【已解决】.ini文件无法读取信息
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!C语言 INI文件内数据读取方法_百度知道
C语言 INI文件内数据读取方法
一般的ini文件如下
key1 = xxx
key2 = xxx
key3 = xxx
现在所读的ini文件只有key没有section 如下
key1 = xxx
key2 = xxx
key3 = xxx
请问有没有什么专用的函数可以读取key1,key2,key3 的值
经过测试如下两函数都需要section不可用
我有更好的答案
ini文件和普通txt文件相同,都是文本格式,使用普通文本操作函数读取即可。1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。一般的C语言教程都有文件操作一章,可以找本教材进一步学习。2、例程:#include&stdio.h&int&a;char&b,c[100];int&main(){&&&&FILE&*&fp1&=&fopen(&input.ini&,&&r&);//打开输入文件input.ini&&&&FILE&*&fp2&=&fopen(&output.txt&,&&w&);//打开输出文件&&&&if&(fp1==NULL&||&fp2==NULL)&{//若打开文件失败则退出&&&&&&&&puts(&不能打开文件!&);&&&&&&&&rturn&0;&&&&}&&&&fscanf(fp1,&%d&,&a);//从输入文件读取一个整数&&&&b=fgetc(fp1);//从输入文件读取一个字符&&&&fgets(c,100,fp1);//从输入文件读取一行字符串&&&&&&&&printf(&%ld&,ftell(fp1));//输出fp1指针当前位置相对于文件首的偏移字节数&&&&&&&&fputs(c,fp2);//向输出文件写入一行字符串&&&&fputc(b,fp2);//向输出文件写入一个字符&&&&fprintf(fp2,&%d&,a);//向输出文件写入一个整数&&&&&&&&fclose(fp1);//关闭输入文件&&&&fclose(fp2);//关闭输出文件,相当于保存&&&&return&0;}
采纳率:74%
来自团队:
其实可以自己写,就是写一个读取函数而已~!遇到key的时候把后面的值付给变量就可以了~!
写个读取函数其实不难。只是做读取值内空格和TAB删除处理的时候有点麻烦。所以先问问高人们有没有不用指定section,只是指定key名就能读取key值的标准函数。看来好像是没有了。
本回答被提问者采纳
其他类似问题
您可能关注的内容
ini文件的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 读取ini文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信