Boost logo

Boost Users :

From: Frame Buffer (framebuffer_at_[hidden])
Date: 2007-08-22 10:23:19


Hello!

I am trying to compile the following program from *Beyond the C++ Standard
Library: An Introduction to Boost.

*Here is the source code:

#include <iostream>
#include <string>
#include "boost/lexical_cast.hpp"

class lexical_castable
{
public:
    lexical_castable()
    {

    };

    lexical_castable(const std::string s) :
    s_(s)
    {

    };

    friend std::ostream& operator<<(std::ostream& o, const lexical_castable&
le);
    friend std::istream& operator>>(std::istream& i, lexical_castable& le);

private:
    virtual void print_(std::ostream& o) const;
    void read_( std::istream& i );
    std::string s_;
};

std::ostream& operator<<(std::ostream& o, const lexical_castable& le)
{
    le.print_(o);

    return o;
}

std::istream& operator>>(std::istream& i, lexical_castable& le)
{
    le.read_(i);

    return i;
}

void lexical_castable::read_( std::istream& i )
{
    i >> s_;
}

void lexical_castable::print_( std::ostream& o ) const
{
    o << s_ <<"\n";
}

int main(int argc, char* argv[])
{
    lexical_castable le();
    std::cin >> le;

    int i=0;

    try
    {
        i = boost::lexical_cast<int>(le);
        std::cout << i << '\n';

    }
    catch(boost::bad_lexical_cast &e)
    {
        std::cout << e.what() << '\n';

        std::cout << "You were supposed to enter a number!\n";
    }
}

The lexical_cast is throwing an exception as follows:

‡ boost::bad_lexical_cast::what returned 0x004c9888 "bad lexical
cast: source type value could not be interpreted as target" const char *

Note that I have modified the original code a bit because I was trying to
figure out what went wrong. The object le is getting created successfully
with the user entered "number" getting stored in the string s_

Please help. I am using Visual studio 2005 with boost v1.34



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net