Hi all,
I am trying to read a graphviz file into my graph implementation. The
minimum working code as well as the graphviz file are at the end of
this e-mail. The node of the graph is the Vertex struct, which
contains a point object (Point p). For Point class, I overload two
operators, >> and <<, and operator << was previously used to generate
the graphviz file. The operator overloads work well with std::cin and
std::cout, but with the code below, I receive an exception:
bad lexical cast: source type value could not be interpreted as target .
The culprit might be in the << overload. In particular, when reading
from a file, the value of iToBool1 is true, whereas iToBool2 is false.
That is to say, the variable i might change when inserting the stream
data to the point. This does not happen when reading from std::cin, as
both variables are true.
I convert the i variable, originally an istream, to bool because when
the program returns to the calling function, which is
lexical_stream_limited_src::shr_using_base_class on line 1616 in
lexical_cast.hpp, this functions uses the return value of << operator
in a boolean comparison. The value of iToBool2 being false eventually
leads to calling BOOST_LCAST_THROW_BAD_CAST on line 1975.
I wonder if somebody can tell me what is wrong with my operator overload?
I use Boost 1.50 and Visual Studio 2008 on Windows 7.
Thanks!
Best regards,
Nicholas
//--------------------Graphviz--------------------
graph G {
1 [Point="1 2 3"];
}
//----------------------code----------------------
#include