0
i/ostream의 비트 시프트 부울 오버로드를 교체하고 싶습니다. 현재 구현에서는 "0"또는 "1"의 입력 문자열 만 가져 와서 "0"또는 "1"만 출력합니다. 나는 "t", "true", "f", "false"등과 같은 다른 시퀀스를 고려하는 과부하를 만들고 싶다. 제한된 범위에 국한되어 있다고해도 어쨌든이 작업을 수행 할 수 있습니까? 당신은 가능성으로 t
및 f
를 삭제하고자하는 경우o/istream bool 비트 시프트 연산자를 대체하십시오.
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;
}
은 definiti 각 구현마다 다른 boolalpha? – Jim
@ 짐 No. 654321 – David