Zmeika
простая аркадная игра
|
#include <map>
#include <string>
#include <sstream>
#include <type_traits>
Определения типов | |
using | Dictionary = std::map< std::string, std::string > |
базовый тип словаря Подробнее... | |
Функции | |
Dictionary | load_dictionary (const char *fn) |
загрузить словарь из файла Подробнее... | |
void | refresh_dictionary (const char *fn, const Dictionary &d) |
обновить файл содержимым словаря (сохранить словарь) Подробнее... | |
template<class T > | |
std::string | toString (T t) |
вспомогательная функция для перевода значений в строки Подробнее... | |
template<class T > | |
std::decay< T >::type | try_parse (const std::string &input, T &&default_value=T()) |
вспомогательная конструкция для разбора строк "на месте". Подробнее... | |
template<class T > | |
std::decay< T >::type | try_get (const Dictionary &dict, const std::string &key, T &&default_value=T()) |
попытаться извлечь значение по ключу и одновременно разобрать его строковое представление Подробнее... | |
Средства для чтения файлов-"словарей", состоящих из строчек вида "ключ" = "значение" // комментарий Нераспознанные строчки игнорируются (refresh_dictionary сохраняет их нетронутыми).
Кавычки не обязательны, но если их нет, то читается только одно "слово". В начале полагается, что ключи и значения – строки.
using Dictionary = std::map<std::string, std::string> |
базовый тип словаря
На данный момент это map, который хранит уникальные ключи. При совпадении ключей, будет сохранено только последнее из значений. При сохранении в файл, содержащий несколько записей с совпадающим ключом, все их значения будут заменены на одно.
Потенциальная проблема возможна в случае, если два игрока имеют одинаковое количество очков, так как в списке результатов игроков качестве ключа используется количество очков.
Dictionary load_dictionary | ( | const char * | fn | ) |
загрузить словарь из файла
fn | имя файла (чтение) |
void refresh_dictionary | ( | const char * | fn, |
const Dictionary & | d | ||
) |
обновить файл содержимым словаря (сохранить словарь)
fn | имя файла (чтение-запись) |
d | объект словаря – источник данных |
std::string toString | ( | T | t | ) |
вспомогательная функция для перевода значений в строки
t | значение произвольного типа, для которого определён оператор ostream& << T |
std::decay<T>::type try_get | ( | const Dictionary & | dict, |
const std::string & | key, | ||
T && | default_value = T() |
||
) |
попытаться извлечь значение по ключу и одновременно разобрать его строковое представление
dict | словарь, в котором будет произведён поиск значения |
key | ключ, по которому будет выбираться значения из словаря |
default_value | значение по умолчанию: то, что будет возвращено в случае ошибки разбора или отсутствия ключа в словаре |
std::decay<T>::type try_parse | ( | const std::string & | input, |
T && | default_value = T() |
||
) |
вспомогательная конструкция для разбора строк "на месте".
input | строковое представление, которое надо разобрать |
default_value | значение по умолчанию: то, что будет возвращено в случае ошибки разбора input |