begin process at 2012 02 11 04:07:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Fichier & Disque

 > 

Lecture fichier ini avec plusieurs clés identiques


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Lecture fichier ini avec plusieurs clés identiques

mardi 29 juillet 2008 à 15:46:46 | Lecture fichier ini avec plusieurs clés identiques

romauto750

Bonjour à tous,

J'ai un fichier .ini qui est composé de la façon suivante :

[SECTION]
testclé=valeur1
testclé=valeur2
testclé=valeur3
...

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.

Merci.
mardi 29 juillet 2008 à 18:58:11 | Re : Lecture fichier ini avec plusieurs clés identiques

Lucky92

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" );

    //construction dictionnaire
    multimap< string , string > dico;
    section_2_dico( tab , size , dico );

    //affichage du dictionnaire
    for ( multimap< string , string >::iterator it = dic.begin() ; it != dic.end() ; it++ )
    {
        cout << it->first << " = " << it->second << endl ;
    }
}




Cette discussion est classée dans : fichier, lecture, ini, clés, identiques


Répondre à ce message

Sujets en rapport avec ce message

Lecture/écriture de fichier .INI sous Unix? [ par Samprayoga ] Bonjour à tous,C'est mon premier message sur ce forum, alors je vais essayer d'être clair.J'aimerais savoir s'il existe ou si quelqu'un a déjà impléme Lecture fichier ini avec borland c++ 5.02 [ par guignol71 ] S'il vous plait aidez-moi je suis désespérement a la recherche d'une méthode simple pour lire un fichier ini sans la bibliotheque "inifiles" ou les MF lecture fichier INI en C et sans les API ??? [ par guignol71 ] Bonjour a tous! Je cherche à lire un fichier Ini et ce en langage C et sans les API Windows car mon programme doit etre exucuté sur un microprocesseu prob de lecture à partir d'un fichier .ini [ par progrima ] salut! j'ai un prob de lecture à partir d'un fichier .ini je travaille avec visual C++ 6.0, j'ai écrit le code suivant: char serial[30]; GetPriv lecture d'un fichier.INI de N trames en C++ [ par odin13013 ] lecture d'un fichier.INI de N trames   en C++ Bonjour, en bref je fais un programme d'analyse de trame. Dans un fichier.INI je paramétre de la facon s Probleme avec lecture fichier INI [ par Kaioshin12 ] Bonjour, J'ai un soucis avec la lecture d'un fichier .ini. J'utilise la fonction : GetPrivateProfileString("DATABASE","Serveur","",MaVariable,100,"Co accélérer la lecture / écriture dans un fichier [ par infodaoudi ] Bonjour ,j'ai un programme qui utilise des entrée/sortie lecture écriture dans un fichier de taille très grande 20 go,y-il un moyen pour accélérer le Lecture fichier .config [ par wislam2007 ] Salut j ai un fichier .config contient une seul ligne, j'utilise visual c++ 6, comment puis-je faire pour lire ma 1ere ligne? A vs[^^sad1] problème lecture fichier de grande taille [ par africanwinners ] j'ai concu ce code pour lire le contenu d'un fichier et le mettre dans un tableau à 2 dimensions: ca marche pour un fichier de petite taille:et dès qu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales