Помогите с INI файлами
| IROV.. | Постоялец | www | 9 сен. 2004 | 18:09 | #0 |
|---|
есть ини фаил..
[SUPER] test = ghgfh google = ghghgh look = gffgfg
теперь мне надо все это упаковать в std::map<std::string,std::string>
как это зделать помогите.. количество неизвесно.. 8(
Последняя правка: 9 сен. 2004 18:59
| Удалён | www | 9 сен. 2004 | 19:48 | #2 |
ну просто же, чего тут думать-то?
| NetImperia | Новичок | www | 9 сен. 2004 | 20:02 | #3 |
|---|
| IROV.. | Постоялец | www | 9 сен. 2004 | 20:18 | #4 |
|---|
так первый вариант 8) рабочий 8))
std::map<std::string,std::string> parseIniSection(const char *Section,const char *iniFile)
{
char strg[65535];
char s0[256];
char s1[256];
std::map<std::string,std::string> m;
GetPrivateProfileSection(Section,strg,sizeof(strg),iniFile);
int i=0;
for(;;)
{
std::string _s = &strg[i];
if( _s.size() )
{
_s.replace(_s.find("="),1," ");
sscanf(_s.c_str(),"%s %s",s0,s1);
m[s0] = s1;
i+=_s.size()+1;
}
else
{
break;
}
}
return m;
} |
| IROV.. | Постоялец | www | 9 сен. 2004 | 20:45 | #7 |
|---|
NetImperia
ConfigFile::ConfigFile(std::string const& configFile)
{
std::ifstream file(configFile.c_str());
std::string line;
std::string name;
std::string value;
std::string inSection;
int posEqual;
while (std::getline(file,line))
{
if ( ! line.length()) continue;
if ( line[0] == '#') continue;
if ( line[0] == ';') continue;
if ( line[0] == '[')
{
inSection=line.substr(1,line.find(']')-1);
continue;
}
posEqual=line.find('=');
name = line.substr(0,posEqual);
// for(;;)
// {
// std::string::size_type it = name.find(" ");
// if( it != std::string::npos )
// {
// name.replace(it,1,"");
// }
// else
// {
// break;
// }
// }
value = line.substr(posEqual+1);
printf("insert [%s/%s]\n",inSection.c_str(),name.c_str());
content_[inSection+'/'+name]=value;
}
}коментами добавлено то что надо добавить.. 8)
/ Форум / Программирование игр / Графика
Для определения, можете ли вы оставлять сообщения, необходимо войти в систему под своим логином.