90 votes

Quel est le moyen le plus simple d'analyser un fichier INI en C++ ?

J'essaie d'analyser un fichier INI en utilisant C++. Avez-vous des conseils sur la meilleure façon d'y parvenir ? Dois-je utiliser les outils de l'API Windows pour le traitement des fichiers INI (que je ne connais pas du tout), une solution open-source ou tenter d'analyser le fichier manuellement ?

118voto

Adam Mitz Points 4540

Si vous avez besoin d'une solution multiplateforme, essayez la solution de Boost. Options du programme bibliothèque.

1 votes

Je suggère également cette bibliothèque

22 votes

C'est ce qu'il faut faire, je ne comprends pas pourquoi les gens ne font que voter en haut des réponses pas si générales.

21 votes

@Gollum, il semble que Windows soit une dépendance donnée. L'utilisation de la bibliothèque Options du programme signifie qu'il faut prendre une autre dépendance. Parfois, ce n'est pas un gros problème, parfois oui.

117voto

Joel Spolsky Points 22686

Vous pouvez utiliser les fonctions de l'API Windows, telles que GetPrivateProfileString() y GetPrivateProfileInt() .

4 votes

GetPrivateProfileInt() et d'autres fonctions ne sont pas recommandées par MSDN, car elles sont obsolètes et ne sont toujours fournies que pour assurer la compatibilité ascendante avec les anciens systèmes 16 bits. Au lieu de cela, utilisez une autre approche. msdn.microsoft.com/fr/us/library/Windows/desktop/

4 votes

Ils sont obsolètes parce que MS ne veut plus que vous utilisiez les fichiers ini, mais ils restent idéaux si vous voulez réellement lire ou écrire de tels fichiers.

23voto

Lars Mæhlum Points 4569

Je n'ai jamais analysé les fichiers ini, je ne peux donc pas être trop précis sur ce point.
Mais j'ai un conseil :
Ne réinventez pas la roue si une solution existante répond à vos besoins.

http://en.wikipedia.org/wiki/INI_file#Accessing_INI_files
http://sdl-cfg.sourceforge.net/
http://sourceforge.net/projects/libini/
http://www.codeproject.com/KB/files/config-file-parser.aspx

Bonne chance :)

20voto

Dat Chu Points 3810

Si vous utilisez déjà Qt

QSettings my_settings("filename.ini", QSettings::IniFormat);

Puis lire une valeur

my_settings.value("GroupName/ValueName", <<DEFAULT_VAL>>).toInt()

Il y a un tas d'autres convertisseurs qui convertissent vos valeurs INI en types standards et en types Qt. Consultez la documentation Qt sur QSettings pour plus d'informations.

0 votes

Pas mal, bien que si vous faites des changements, ils les sauvegardent à nouveau dans le fichier .ini sans vraiment vous le dire (par exemple, le destructeur appelle sync() ce qui peut être une surprise) et qui détruit les commentaires et l'ordre dans lequel les variables étaient définies précédemment...

16voto

Harold Ekstrom Points 1214

J'utilise SimpleIni . Il est multiplateforme.

0 votes

SimpleIni est maintenant hébergé sur Github.

0 votes

Il semble supporter Visual Studio et GCC, licence MIT. Au moment où nous écrivons ces lignes, ses constructions automatiques échouent, la dernière version date de septembre 2013, le dernier commit : Juin 2020

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X