Q: How can you initialize something to ' '? I am reading Programming Principles and Practice Using C++ and many people say this is nonsense.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
// convert from inches to centimeters or centimeters to inches
// a suffix āiā or ācā indicates the unit of the input
// any other suffix is an error
int main()
{
constexprdouble cm_per_inch = 2.54; // number of centimeters in
// an inch
double length = 1; // length in inches or
// centimeters
char unit = ' '; // a space is not a unit
cout<< "Please enter a length followed by a unit (c or i):\n";
cin >> length >> unit;
if (unit == 'i')
cout << length << "in == " << cm_per_inch*length << "cm\n";
elseif (unit == 'c')
cout << length << "cm == " << length/cm_per_inch << "in\n";
else
cout << "Sorry, I don't know a unit called '" << unit << "'\n";
}
It is possible for line 12 to fail to extract anything from the input stream. If that is the case, it makes sense that you want unit to be a predictable value and not accidentally one that you were expecting.
Of course, I guess you could just make sure the extraction happened and not worry about the initial value of unit.