I want my user to be able to enter a fraction. I could be lazy and just take num and denom separate...

But I was wondering if there is way I can allow user to enter a fraction like "3/4". And somehow ignore the '/'. I guess I could take it as a string and parse it somehow, but is there a way just to simply ignore the '/'..treating it like whitespace or something.

7 Years
Discussion Span
Last Post by vijayan121

How will treating the / as whitespace help you? I assume that you want to convert the user's input (e.g. 3/4) to a float (0.75) in your code?

So you'll have to split the input string on the '/' character (and do something sensible if the '/' is not found), convert both halves to some numerical type, and then 'calculate' the fraction.


Well, I was thinking white space because I could do something like this.

cin << num << denom;

And no, the num and denom are being fed into a fraction object, not being turned into a float, sorry should have mentioned.

But I guess that answers my question..in that I will have to use a string. Was just looking for an easy way, since I've never really messed with strings in c++. Guess I've got some reading to do. Thanks for post


Ok, then there actually is an easier way. You can overload operator>> in your fraction class.


struct fraction
	int num, denom;
istream &operator >> (istream &in, fraction &f)
	in >> f.num;
	in >> f.denom;
	return in;

Hope that helps


Oh, wow thanks a bunch. Looks real interesting. I'm gonna try that out tonight.

int numerator, denominator ;
    char slash ;

    // std::cin >> std::skipws // this is the default
    if( ( std::cin >> numerator >> slash >> denominator ) && ( slash == '/' ) )
        // ok
        // error in input
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.