MiniINI is a a free/open source, minimalistic, fast and easy to use C++ library for reading INI (or CFG) files. It has no dependencies other than the standard library and should compile on any platform with a standard compliant C++ compiler with C99 support.
Main priority of MiniINI is, as its name suggests, minimalism and speed.
The goal is to create fastest INI parser possible without sacrificing ease of use.
MiniINI should be useful especially for game development,
for instance storing game settings, properties of units in strategy games, etc.
MiniINI can also check ini files it reads, and issue
warnings for the most common mistakes in ini code.
This should be useful mainly for users of programs based on MiniINI,
for instance game modders. MiniINI is already quite fast, being able
to load, parse and unload a ~1MB ini file with 512 sections in less than 50 ms.
At the moment, MiniINI can only read INI files, not write to them.
This should change in future versions.
MiniINI is released under the MIT/X license.
- Reads from INI/CFG files, or from user provided buffer containing contents
of an INI/CFG file. This allows the user e.g. to load data from a compressed
file and pass it to MiniINI.
- Can read headerless ini/cfg files.
- Only plain ASCII files are supported. There is no support for Unicode, and
there probably never will be.
- Case-sensitive. That means that [CASE], [case] and [Case] are not the same
and there is a difference between Tag= and TAG=
- Ignores *all* spaces, i.e. no spaces/tabs in tags or values. For example: +
t a g = 125 685 +
both have the same meaning. Spaces _might_ be supported in the future for values,
if there will be a need, but are not planned at the moment.
- Can read arrays of data from tags with multiple, comma separated values.
- Can also read arrays from numbered sequences of tags, for example:
- Cannot write to ini files at this time. This should be implemented in future.
- Provides methods to read strings, ints, floats and bools from inifile
and checks the ini data for errors, allowing the programmer to use
their own default values.
- Supports both plain strings and arrays and STL strings and vectors. STL
functionality can be disabled for more minimalism.
- Supports iteration over contents of INI files.
- Supports single line comments with a configurable comment character. So if you
want to use '#' instead of ';' , you can. There is no support for multiple
comment characters at the same time for performance reasons.
- Name=value separator is configurable as well, '=' by default.
- Tutorials detailing every feature of the library
- Maintained API documentation
- Extremely fast. Even multi-MB ini files with hundreds or thousands of sections
can be processed in fractions of a second.
- Low memory usage. Data structure overhead is reduced as much as possible.
- Debug build can issue warnings to the user using a callback function
specified by the programmer. For example when a tag from which the program
tries to load an integer contains something else.