我正在尝试使用C++解析INI文件.关于什么是实现这一目标的最佳方法的任何提示?我应该使用Windows API工具进行INI文件处理(我完全不熟悉),一个开源解决方案或尝试手动解析它?
我想解析配置文件sorta的事情,如下:
[KEY:Value]
[SUBKEY:SubValue]
Run Code Online (Sandbox Code Playgroud)
现在我开始使用a StreamReader,将线转换为字符数组,当我认为必须有更好的方法时.所以我请谦虚的读者帮助我.
一个限制是它必须在Linux/Mono环境中工作(确切地说是1.2.6).我没有最新的2.0版本(Mono),因此请尝试将语言功能限制为C#2.0或C#1.0.
是否有人建议采用二进制数据文件的设计模式,将其中的一部分解析为对象并将结果数据存储到数据库中?
我认为可以使用类似的模式来获取XML或制表符分隔的文件,并将其解析为其代表对象.
常见的数据结构包括:
(Header)(DataElement1)(DataElement1SubData1)(DataElement1SubData2)(DataElement2)(DataElement2SubData1)(DataElement2SubData2)(EOF)
我认为一个好的设计将包括一种基于文件类型或标题中包含的一些定义的元数据来更改解析定义的方法.因此,工厂模式将成为Parser部件整体设计的一部分.
我只是想知道是否有人知道我可以在帖子底部解析文件的好方法.
我有一个数据库设置,每个部分都有正确的表格,例如Refferal Table,Caller Table,Location Table.每个表都具有相同的列,显示在下面的文件中
我真的很想要一些相当遗传的东西,所以如果文件布局发生变化,它就不会让我感到困惑.目前我只是在一行中读取文件,只是使用case语句来检查我所在的部分.
有人能帮我这个吗?
PS.我使用VB但C#或其他任何东西都没问题,文件中的x也只是个人信息我已经空白
谢谢,内森
文件:--->
DIAL BEFORE YOU DIG
Call 1100, Fax 1300 652 077
PO Box 7710 MELBOURNE, VIC 8004
Utilities are requested to respond within 2 working days and reference the Sequence number.
[REFFERAL DETAILS]
FROM= Dial Before You Dig - Web
TO= Technical Services
UTILITY ID= xxxxxx
COMPANY= {Company Name}
ENQUIRY DATE= 02/10/2008 13:53
COMMENCEMENT DATE= 06/10/2008
SEQUENCE NO= xxxxxxxxx
PLANNING= No
[CALLER DETAILS]
CUSTOMER ID= 403552
CONTACT NAME= {Name of Contact} …Run Code Online (Sandbox Code Playgroud) 出于某种原因,我的代码正在做这个奇怪的事情,fileparse只打印(字面意思)File::Basename
use strict;
use warnings 'all';
use File::Basename;
...
my $fileName = File::Basename->fileparse($filePath);
print("$filePath\n");
print("$fileName\n");
Run Code Online (Sandbox Code Playgroud)
输出是:
a/b/c/d.bin
File::Basename
Run Code Online (Sandbox Code Playgroud)
我做错了什么?