|
Boost : |
From: Alexander Nasonov (alnsn_at_[hidden])
Date: 2007-01-28 13:52:54
john_at_[hidden] wrote:
>
> I am having some trouble with lexical_cast that I think illustrates
> a problem with the underlying implementation. My basic
> problem is that I'd like lexical_cast to "work" for user-defined
> types (UDTs) that conform to lexical_cast's documented specification of
> OutputStreamable, InputStreamable, CopyConstructible and
> DefaultConstructible.
[ skiped ]
> std::istream& operator>>(std::istream& s, Udt& u){
> return s >> u.a >> u.b;
> }
I believe that this implementation is incorrect. If you put a writespace
in output operator, you should be prepared for skipws flag and read the
writespace explicitly:
std::istream& operator>>(std::istream& s, Udt& u){
s >> u.a;
if((s.flags() & std::ios_base::skipws) == 0)
{
char whitespace;
s >> whitespace;
}
return s >> u.b;
}
-- Alexander Nasonov http://nasonov.blogspot.com There comes a time in every rightly constructed boy`s life when he has a raging desire to go somewhere and dig for hidden treasure. -- Henry Kissinger -- This quote is generated by: /usr/pkg/bin/curl -L http://tinyurl.com/veusy \ | sed -e 's/^document\.write(.//' -e 's/.);$/ --/' \ -e 's/<[^>]*>//g' -e 's/^More quotes from //' \ | fmt | tee ~/.signature-quote
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk