Какие из загрузочных библиотек C ++ INI (или любого другого формата) поддерживают несколько ключей? - PullRequest
0 голосов
/ 03 декабря 2010

В настоящее время я использую SimpleINI, и я не уверен, смогу ли я сделать это с этим, но мой файл конфигурации будет выглядеть так

name = someone 
service = something
match = blahblahblah
match = something
match = some more junk

Я заранее знаю, какой из ключей поддерживает несколько значений, и я хочу, чтобы эти значения были сохранены в массиве или чем-то еще, чтобы я мог просмотреть их позже (порядок не имеет значения).

Если не SimpleIni, то какая другая библиотека будет поддерживать это? Я новичок в C ++, поэтому я ищу что-то простое в использовании. У меня есть буст-библиотеки, но я не уверен, что мне следует их использовать (кажется сложным).

Мое приложение предназначено для Windows, поэтому в этом случае мне не нужно межплатформенное решение.

Я уже видел этот вопрос - Какой самый простой способ проанализировать INI-файл в C ++? , но не уверен, какой из них я могу использовать для достижения этой цели.

Есть предложения?

Ответы [ 3 ]

0 голосов
/ 03 декабря 2010

Если вы работаете в Windows, вам может вообще не понадобиться библиотека.

Вы никогда не узнаете ее, просто просмотрев документацию, но GetPrivateProfileString () в WINAPI можетделай то, что хочешь.

0 голосов
/ 03 декабря 2010

Мое решение Qt в другом потоке SO применимо. Это лучше, потому что

  • Кроссплатформенный
  • Простое преобразование в значения, отличные от строк
  • Simple

Если у вас есть такой INI-файл (может быть автоматически сгенерирован из вашего списка объектов с использованием Qt API)

[Matches]
1\match=1
2\match=2
3\match=3
size=3

Вот код, который читает их обратно

QSettings settings("test.ini", QSettings::IniFormat);
int size = settings.beginReadArray("Matches");
for (int i = 0; i < size; ++i) {
    settings.setArrayIndex(i);
    std::cout << settings.value("match").toInt() << std::endl;
}
settings.endArray();

Конечно, еще одним очевидным вариантом будет использование строки, разделенной запятыми, в качестве значения и использование QString :: split ()

0 голосов
/ 03 декабря 2010

У вас нет возможности изменить имена на что-то вроде match1, match2, match3 и т. Д.? Казалось бы, это самый прямой путь.

Кроме того, я все время делал такие вещи. Я просто написал несколько строк кода, чтобы разобрать текстовый файл самостоятельно. Это не сложная задача. Но если вы предпочитаете работать с обычными INI-файлами, вам нужно обратить внимание на изменение имен значений в INI-файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...