使用ACE读取INI文件



使用ACE读取INI文件

// read_ini.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <stdio.h>

#include <ace/ACE.h>
#include <ace/configuration_Import_Export.h>

using namespace std;

#pragma comment(lib,"aced.lib")


int ReadFromIni(const char* szIni);

int _tmain(int argc, _TCHAR* argv[])
{

	ReadFromIni("config.ini");
	return 0;
}


int ReadFromIni(const char* szIni)
{
	ACE_Configuration_Heap config;
	ACE_Ini_ImpExp ini(config);

	config.open();

	if (-1==ini.import_config(szIni))
	{
		ACE_ERROR_RETURN((LM_ERROR,"error open config failed\n"),-1);
	}

	ACE_Configuration_Section_Key key_network;
	config.open_section(config.root_section(),"mc_app",0,key_network);

	ACE_TString value;
	config.get_string_value(key_network,"mc_ip",value);
	cout<<"ip="<<value.c_str()<<endl;

	config.get_string_value(key_network,"mc_port",value);
	int port=atoi(value.c_str());

	cout<<"port="<<port<<endl;

	ACE_DEBUG((LM_NOTICE,"will listen on port %d\n",port));

	
	ACE_Configuration_Section_Key key_person;
	config.open_section(config.root_section(),"person",0,key_person);

	 
	config.get_string_value(key_person,"name",value);
	cout<<"name="<<value.c_str()<<endl;

	config.get_string_value(key_person,"sex",value);
	cout<<"sex="<<value.c_str()<<endl;


	return 0;
}

ini文件:

[mc_app]
mc_ip="127.0.0.1"
mc_port=11211
[person]
name="天策"
sex="男"


ACE_Configuration_Heap config;
ACE_Ini_ImpExp ini(config);
ACE_Configuration_Section_Key section_content;
ACE_TString strValue;
char szSec[128];
char szKey[128];
int nRet = 0;
char *pConfigFile = "C:\\config.ini";

// init config heap
nRet = config.open();
if(nRet != 0) {
	ACE_DEBUG((LM_ERROR, ACE_TEXT("[%N:%l]: init config heap error.\n")));
	return -1;
}
// open config file
nRet = ini.import_config(pConfigFile);
if(nRet != 0) {
	ACE_DEBUG((LM_ERROR, 
		ACE_TEXT("[%N:%l]: open config file[%s] error.\n"), pConfigFile));
	return -1;
}

// read the sec
memset(szSec, 0, sizeof(szSec));
strncpy(szSec, "TEST", sizeof(szSec));
nRet = config.open_section(config.root_section(), szSec, 0, section_content);
if(nRet != 0) {
	ACE_DEBUG((LM_ERROR, ACE_TEXT("[%N:%l]: open_section[%s] error.\n"), szSec));
	return -1;
}

// read the key
memset(szKey, 0, sizeof(szKey));
strncpy(szKey, "TV1", sizeof(szKey));
nRet = config.get_string_value(section_content, szKey, strValue);
if(nRet != 0) {
	ACE_DEBUG((LM_ERROR, 
		ACE_TEXT("[%N:%l]: get_string_value[%s][%s] error.\n"), szSec, szKey));
	return -1;
}
int nTv1 = atoi(strValue.c_str());
ACE_DEBUG((LM_INFO, ACE_TEXT("[%N:%l]: %s=%d.\n"), szKey, nTv1));







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值