...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::logic::operator>> — Reads a tribool value from a stream.
// In header: <boost/logic/tribool_io.hpp> template<typename CharT, typename Traits> std::basic_istream< CharT, Traits > & operator>>(std::basic_istream< CharT, Traits > & in, tribool & x);
When (out.flags() & std::ios_base::boolalpha) == 0
, this function reads a long
value from the input stream in
and converts that value to a tribool. If that value is 0, x
becomes false
; if it is 1, x
becomes true
; if it is 2, becomes
indetermine
; otherwise, the operation fails (and the fail bit is set on the input stream in
).
When (out.flags() & std::ios_base::boolalpha) != 0
, this function first determines the names of the false, true, and indeterminate values. The false and true names are extracted from the std::numpunct
facet of the input stream's locale (if the C++ standard library implementation supports locales), or from the default_false_name
and default_true_name
functions (if there is no locale support). The indeterminate name is extracted from the appropriate
facet (if it is available in the input stream's locale), or from the indeterminate_name
get_default_indeterminate_name
function (if the C++ standard library implementation does not support locales, or the
facet is not specified for this locale object). The input is then matched to each of these names, and the tribool indeterminate_name
x
is assigned the value corresponding to the longest name that matched. If no name is matched or all names are empty, the operation fails (and the fail bit is set on the input stream in
).
Returns: |
|