0

How do i read in an equation in this format: 1 + 2a + 3b + 4c?

I need to extract only the value 1, 2, 3, 4.

2
Contributors
4
Replies
5
Views
8 Years
Discussion Span
Last Post by toolbox03
0

What are you going to do with the values? Are you guaranteed that whitespace will separate the operators and operands? It could be really simple, or you might be better off writing a few classes that hold the raw equation data but still pass out extracted values. Depends on what problem you're trying to solve.

0

What are you going to do with the values? Are you guaranteed that whitespace will separate the operators and operands? It could be really simple, or you might be better off writing a few classes that hold the raw equation data but still pass out extracted values. Depends on what problem you're trying to solve.

I'm trying to do an >> overload.

istream& operator >> (istream& in, Quaternion& rhs)
{
in >> rhs.a;
in.ignore();
in.ignore();
in.ignore();

in >> rhs.b;
in.ignore();
in.ignore();
in.ignore();
in.ignore();

in >> rhs.c;
in.ignore();
in.ignore();
in.ignore();
in.ignore();
in >> rhs.d;

return in;
}

0

I don't think this will solve the problem, but lacking sufficient details, Edward will give you exactly what you asked for:

void SkipNonNumeric(istream& in)
{
  // Skip non-numeric characters
  while (in && !isdigit(in.peek()))
    in.ignore();
}

istream& operator>>(istream& in, Quaternion& rhs)
{
  in >> rhs.a;
  SkipNonNumeric(in);
  in >> rhs.b;
  SkipNonNumeric(in);
  in >> rhs.c;
  SkipNonNumeric(in);
  in >> rhs.d;

  // Clear out the remaining equation
  in.ignore(1024, '\n');

  return in;
}
0

I don't think this will solve the problem, but lacking sufficient details, Edward will give you exactly what you asked for:

void SkipNonNumeric(istream& in)
{
  // Skip non-numeric characters
  while (in && !isdigit(in.peek()))
    in.ignore();
}

istream& operator>>(istream& in, Quaternion& rhs)
{
  in >> rhs.a;
  SkipNonNumeric(in);
  in >> rhs.b;
  SkipNonNumeric(in);
  in >> rhs.c;
  SkipNonNumeric(in);
  in >> rhs.d;

  // Clear out the remaining equation
  in.ignore(1024, '\n');

  return in;
}

Thanks a lot. Got a feeling we are doing the same stuff.

This article 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.