#include <iostream>
#include <string>
using namespace std;
/*
Function Name: weightConv
Purpose: To take the weight and convert the following number to the coressponding weight unit
Return : 0
*/
double weightConv(double w, string weightUnit)
{
if (weightUnit == "g" || weightUnit == "G" )
cout << " Mass = " << w * 0.035274 << "oz";
else if (weightUnit == "oz"||weightUnit == "OZ"||weightUnit == "oZ" ||weightUnit == "Oz")
cout << " Mass = " << w / 28.3495 << "g";
else if (weightUnit == "kg"||weightUnit == "KG"||weightUnit == "Kg" ||weightUnit == "kG")
cout << " Mass = " << w * 2.20462 << "lb";
else if (weightUnit == "lb" ||weightUnit == "LB" ||weightUnit== "Lb" ||weightUnit == "lB")
cout << " Mass = " << w * 0.453592 << "kg";
else if (weightUnit == "Long tn" ||weightUnit == "LONG TN"|| weightUnit == "long tn" || weightUnit == "long ton")
cout << " Mass = " << w * 1.12 << "sh tn";
else if (weightUnit == "sh tn" || weightUnit == "SH TN")
cout << " Mass = " << w / 0.892857 << " Long tons";
else if (weightUnit == "s" || weightUnit == "S")
cout << " Mass = " << w * 6.35029 << "stones";
else
cout << "Is an unknown unit and cannot be converted";
return 0;
}// end of weightCov function
int main()
{
for (;;)
{
double mass;
string unitType;
cout << "Enter a mass and its unit type indicator(g,kg,lb,oz,long tn,or sh tn)" << endl;
cin >> mass >> unitType;
// Output Results
cout << weightConv(mass, unitType) << endl;
}// end of for loop
}// end of main
没有空格的重量单位效果很好。问题是长tn(长吨)和sh tn(短吨)单位不起作用,我假设这是因为字符串之间存在间距。谁能帮忙。提前致谢。
std::istream
的operator>>(std::string &)
,你在这里使用:
cin >> mass >> unitType;
读取以空格分隔的标记。这意味着,当您输入"12 long tn"
输入流时,mass
将为12.0
和unitType
将为"long"
。
解决问题的方法可能涉及std::getline
,如
std::cin >> mass;
std::getline(std::cin, unitType);
这将一直读到下一个换行符。但是,这不会像这样剥离前导空格operator>>
,因此您将被" long tn"
代替"long tn"
。您需要像这样显式地忽略那些空格:
std::cin >> std::ws;
最终,您将拥有
std::cin >> mass >> std::ws; // read mass, ignore whitespaces
std::getline(std::cin, unitType); // the rest of the line is the unit
请注意,这不会删除结尾的空格,因此,如果您的用户键入"12 long tn "
,它将无法识别该单位。如果出现问题,则必须从末尾手动剥离它们unitType
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句