Le nom des clés est identique et il faudrait que je récupère toutes les valeurs de testclé. J'ai trouvé la fonction GetPrivateProfileSection mais elle récupére tout dans le même tableau sous le format clé=valeur alors ce n'est pas très pratique.
Quelqu'un saurait comment faire ? Je précise que ce n'est pas moi qui génère ce fichier et donc impossible de changer son format.
cs_Lucky92
Messages postés180Date d'inscriptionmercredi 22 décembre 2004StatutMembreDernière intervention16 août 20122 29 juil. 2008 à 18:58
Salut,
Je pense que, dans les .INI, pour une section donnée, une clé doit être associée à une unique valeur, et donc, qu'il n'y a pas de fonction dans l'API win32 pour gérer des associations multiples.
Mais, comme tu sais obtenir le contenu de la section, tu es en mesure de le parser ; voici une routine qui parse ce contenu pour le placer dans un multimap ( dictionnaire dont la valeur d'une clé n'est pas forcément unique ).
#include <string>
#include <sstream>
#include <map>
...
void section_2_dico( const char * str , size_t sz , multimap< string , string > & dic )
{
istringstream section( string( str, sz ) );
string line , key , value ;
while ( getline( section, line , '\0' ) )
{
istringstream iss( line );
if ( getline( iss , key , '=' ) && getline( iss , value ) )
{
dic.insert( pair< string , string >( key , value ) );
}
}
}
...
Exemple d'utilisation :
int main()
{
//lecture de la section
const size_t max_size( 32767 );
char tab[ max_size ];
size_t size = GetPrivateProfileSection( "SECTION" , tab , max_size , "./test_section.ini" );