施用ACE遍历读取ini文件
使用ACE遍历读取ini文件
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 file\n"),-1 ); cout << "error open config file" << endl; return -1; } ACE_Configuration_Section_Key key_network; int retCode = config.open_section(config.root_section(), "mc_app", 0, key_network); cout << "retCod = " << retCode << endl; 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; int iIndex = 0; while (true) { retCode = config.enumerate_sections(config.root_section(), iIndex, value); if (1 == retCode) { break; } if (retCode < 0) { cout << "lasterror = " << ACE_OS::last_error() << endl; break; } cout << "[" << value.c_str() << "]" << endl; retCode = config.open_section(config.root_section(), value.c_str(), 0, key_network); if (retCode < 0) { cout << "lasterror = " << ACE_OS::last_error() << endl; //iIndex ++; //continue; break; } int valueIndex = 0; ACE_TString valueName; ACE_Configuration::VALUETYPE valueType; while (true) { retCode = config.enumerate_values(key_network, valueIndex, valueName, valueType); if (1 == retCode) { break; } if (retCode < 0) { cout << "lasterror = " << ACE_OS::last_error() << endl; break; } cout << "valueName=" << valueName << ", valueType=" << valueType << endl; valueIndex ++; } // iIndex ++; } //ACE_DEBUG((LM_NOTICE,"will listen on port %d\n",port)); return 0; }