|
Boost : |
Subject: Re: [boost] [Convert] std::isspace requires unsigned #28
From: Vladimir Batov (Vladimir.Batov_at_[hidden])
Date: 2017-03-21 02:10:48
Many thanks, Gavin. Looking into char_traits<>::to_int_type()... Very
little info/explanation... So, seems have to look at the code...
std::ctype looks very promising... even has toupper(). Gosh. I hate
choices. :-)
Thank you for the pointers. Very much appreciated.
On 2017-03-21 12:49, Gavin Lambert via Boost wrote:
> On 21/03/2017 13:46, Vladimir Batov via Boost wrote:
>> Thanks, Gavin, indeed I should have a dig in char_traits before
>> re-inventing the wheel. Thanks.
>
> There's also std::ctype<char/wchar_t>::is(), although the call syntax
> for that seems a bit more cumbersome. Also at least according to
> cppreference.com it hasn't been extended for the new 16-bit and 32-bit
> C++11 char types. I don't know if that means anything.
>
>> What about iswspace()? Does it have the same problem as
>> std::isspace(),
>> i.e. needs an explicit cast? Seems unlikely...
>
> I think it's probably good practice to use
> char_traits<>::to_int_type() for that too, since the parameter type is
> wint_t rather than wchar_t, and that's the "right" way to do that
> conversion.
>
> As Peter said in practice it probably wouldn't cause any bugs without
> that since it would be weird for wchar_t to be signed, but as both the
> sign and size of the type is implementation-defined it's not actually
> illegal for that to be the case. (And you're even less likely to
> notice on platforms where wchar_t is 32-bit or larger, but again
> that's implementation-defined.)
>
>
>
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk