Я сохраняю значение 1 и получаю загруженное значение 44?!
Я использую TinyXML2 в C ++.
Посмотрите на записанный файл:
<mapping>
<msaa>8</msaa>
<vsync>true</vsync>
<safemode>false</safemode>
<winmode>1</winmode>
<mapping>
Сохранение файла:
string fpath = path + CONFIG_FILE_EXTENSION;
XmlDoc doc;
//win mode:
XMLElement* root = doc.NewElement("mapping");
XMLElement* win_mode = doc.NewElement("winmode");
win_mode->SetText(cfg.win_mode);
root->InsertFirstChild(win_mode);
//safe mode
XMLElement* safe_mode = doc.NewElement("safemode");
safe_mode->SetText(cfg.safe_mode);
root->InsertFirstChild(safe_mode);
//vsync
XMLElement* vsync = doc.NewElement("vsync");
vsync->SetText(cfg.vsync);
root->InsertFirstChild(vsync);
//msaa
XMLElement* msaa = doc.NewElement("msaa");
msaa->SetText(cfg.msaa);
root->InsertFirstChild(msaa);
doc.InsertFirstChild(root);
doc.SaveFile(fpath.c_str());
И загрузка его:
auto* cfg = new gsettings();
XmlDoc doc;
doc.LoadFile(fpath.c_str());
XMLElement* root = doc.FirstChildElement("__kestd.mapping");
if (root == nullptr)
return cfg;
//winmode
XMLElement* win_mode = root->FirstChildElement("winmode");
cfg->win_mode = static_cast<kwindow_mode>(*win_mode->GetText());
//safemode:
XMLElement* safe_mode = root->FirstChildElement("safemode");
cfg->safe_mode = static_cast<bool>(*safe_mode->GetText());
//vsync:
XMLElement* vsync = root->FirstChildElement("vsync");
cfg->vsync = static_cast<bool>(*vsync->GetText());
//msaa:
XMLElement* msaa = root->FirstChildElement("msaa");
cfg->msaa = static_cast<char>(*msaa->GetText());
return cfg;
Если я напечатаю cfg->winmode
, я получу 44?Как?Перечисление:
enum window_mode : byte //<< byte is a typedef for char
{
fullscreen = 1, //How can it read 44?!
windowed = 0
};
Кто-нибудь может увидеть проблему?Кто-нибудь знает, как это исправить?