Living off of chocolate
Just a quick glance.
But:

std::cout &lt;&lt; XXXX
while(!(std::cin &gt;&gt; age))
{
    std::cin.clear();
    std::cin.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n');
    std::cout &lt;&lt; "Invalid input.  Please enter a number: ";
}


That could be a function.
This would reduce code and make the application easier to read.

Remember code should be DRY.

The formula is the same here:

if ('m' == gender)
{
    bmr = 66 + (6.3 * weight) + (12.9 * height) - (6.8 * age);
}
else if ('f' == gender)
{
    bmr = 655 + (4.3 * weight) + (4.7 * height) - (4.7 * age);
}


So why not pick the constants from some indexed value:

bmr = bmrconst[gender].base 
      + (bmrconst[gender].weight * weight) 
      + (bmrconst[gender].height * height) 
      - (bmrconst[gender].age    * age);


but pick better names than I did.

Don't like magic numbers (230).

const double numBars = bmr / 230;


Use a constant that has a name that makes this have meaning.

Don't declare all your variables at the top:

double weight = 0;
double height = 0;
double age = 0;
double bmr = 0;
char gender = 'm';


Declare them as you need them as close to the point of first use as possible.