Я хочу заменить перегрузку boolbift bool для i/ostream. Текущая реализация принимает только входные строки «0» или «1» и выводит только «0» или «1». Я хочу сделать перегрузку bool, которая учитывает другие последовательности, такие как «t», «true», «f», «false» и т. Д.. Есть ли способ сделать это, даже если он ограничен ограниченным объемом? Это код, который я хочу использовать:replace o/istream bool bithift operator
inline std::ostream& operator << (std::ostream& os, bool b)
{
return os << ((b) ? "true" : "false");
}
inline std::istream& operator >> (std::istream& is, bool& b)
{
string s;
is >> s;
s = Trim(s);
const char* true_table[5] = { "t", "T", "true" , "True ", "1" };
const char* false_table[5] = { "f", "F", "false", "False", "0" };
for (uint i = 0; i < 5; ++i)
{
if (s == true_table[i])
{
b = true;
return is;
}
}
for (uint i = 0; i < 5; ++i)
{
if (s == false_table[i])
{
b = false;
return is;
}
}
is.setstate(std::ios::failbit);
return is;
}
является определением от boolalpha отличается с каждой реализацией? – Jim
@ Jim No. 654321 – David