ACE读取配置文件

该博客介绍了如何使用ACE库中的ACE_Configuration_Heap、ACE_Configuration_Section_Key和ACE_Ini_ImpExp类来读取配置文件,特别是ini格式的文件。通过创建和初始化这些对象,可以打开配置文件的各个section,然后使用get_string_value方法获取配置项的字符串值,如人的姓名、性别、年龄和狗的名称、性别、年龄。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

#include "ace/OS.h"
#include "ace/OS_Main.h"
#include "ace/Configuration.h"
#include "ace/Configuration_Import_Export.h"
#include <iostream>
#include <string>

#ifdef _DEBUG
#pragma comment ( lib, "aced.lib" )
#else
#pragma comment ( lib, "ace.lib")
#endif

struct Config_Info
{
 ACE_TString  person_name;
 ACE_TString  person_sex;
 ACE_TString  dog_name;
 ACE_TString  dog_sex;

 int    person_age;
 int    dog_age;
};
int ACE_TMAIN (int argc, ACE_TCHAR *argv[])
{

 Config_Info config_info;
 

 ACE_Configuration_Heap config_;

 config_.open();
 
 ACE_Ini_ImpExp ini_impexp (config_);

 ini_impexp.import_config (argv[1]);
 
 ACE_Configuration_Section_Key section_person;
 int ret = config_.open_section (config_.root_section(),
              ACE_TEXT ("PERSON"), 0, section_person);
 ret = config_.get_string_value (section_person, ACE_TEXT ("name"),
             config_info.person_name);
 ret = config_.get_string_value (section_person, ACE_TEXT ("sex"), 
             config_info.person_sex);

 ACE_TString person_age;
 ret = config_.get_string_value (section_person,
             ACE_TEXT ("age"),  person_age);
 config_info.person_age = ACE_OS::atoi ( person_age.c_str() );

 ACE_Configuration_Section_Key section_dog;
 config_.open_section (config_.root_section(), ACE_TEXT ("DOG"), 0, section_dog);
 config_.get_string_value ( section_dog, ACE_TEXT ("name"), config_info.dog_name );
 config_.get_string_value ( section_dog, ACE_TEXT ("sex"),  config_info.dog_sex );

 ACE_TString dog_age;
 config_.get_string_value (section_dog, ACE_TEXT ("age"),  dog_age);
 config_info.dog_age = ACE_OS::atoi (dog_age.c_str());

 std::cout << config_info.person_name << "/n" << config_info.person_age << "/n"
     << config_info.person_sex  << "/n" << config_info.dog_name   << "/n"
      << config_info.dog_age  << "/n" << config_info.dog_sex    << std::endl;

 system ("pause");
 return 0;

}

这里一共用到3个类分别是;

ACE_Configuration_Heap

ACE_Configuration_Section_Key

ACE_Ini_ImpExp

 首先初始化一个ACE_Configuration_Heap用来存储读取配置文件获得的信息。

ACE_Configuration_Heap.open() 用来为Heap分配空间。

接着创建一个ACE_Ini_ImpEXP对象。ACE_Ini_ImpExp的基本功能是一个适配器,通过它的import_config初始化ACE_Configuration_Heap的SECTION_MAP成员。

因为ini配置文件是把配置项分成很多个section。

通过ACE_Configuration_Heap的open_section()方法初始化一个ACE_Configuration_Section_Key对象用来保存某个特定的section.

最后通过ACE_Configuration_Heap的get_string_value() get_integer_value()和get_binary_value()方法获得配置项的value。这3个方法分别对应的是3种存储方式,按字符存储,按integer存储或按二进制存储。我们一边的配置项都是用string存储的,所以多数是用get_string_value的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值