Fix bool parsing for non-lowercase values
This commit is contained in:
parent
d68ac91a49
commit
28a499c95a
1 changed files with 7 additions and 2 deletions
|
@ -242,6 +242,10 @@ inline bool fromString(const std::string &str, sint64 &val) { bool ret = sscanf(
|
||||||
inline bool fromString(const std::string &str, float &val) { bool ret = sscanf(str.c_str(), "%f", &val) == 1; if (!ret) val = 0.0f; return ret; }
|
inline bool fromString(const std::string &str, float &val) { bool ret = sscanf(str.c_str(), "%f", &val) == 1; if (!ret) val = 0.0f; return ret; }
|
||||||
inline bool fromString(const std::string &str, double &val) { bool ret = sscanf(str.c_str(), "%lf", &val) == 1; if (!ret) val = 0.0; return ret; }
|
inline bool fromString(const std::string &str, double &val) { bool ret = sscanf(str.c_str(), "%lf", &val) == 1; if (!ret) val = 0.0; return ret; }
|
||||||
|
|
||||||
|
// Fast string to bool, reliably defined for strings starting with 0, 1, t, T, f, F, y, Y, n, N, anything else is undefined.
|
||||||
|
// (str[0] == '1' || (str[0] & 0xD2) == 0x50)
|
||||||
|
// - Kaetemi
|
||||||
|
|
||||||
inline bool fromString(const std::string &str, bool &val)
|
inline bool fromString(const std::string &str, bool &val)
|
||||||
{
|
{
|
||||||
if (str.length() == 1)
|
if (str.length() == 1)
|
||||||
|
@ -273,11 +277,12 @@ inline bool fromString(const std::string &str, bool &val)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (str == "true" || str == "yes")
|
std::string strl = toLower(str);
|
||||||
|
if (strl == "true" || strl == "yes")
|
||||||
{
|
{
|
||||||
val = true;
|
val = true;
|
||||||
}
|
}
|
||||||
else if (str == "false" || str == "no")
|
else if (strl == "false" || strl == "no")
|
||||||
{
|
{
|
||||||
val = false;
|
val = false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue