我正在进行货币兑换活动。程序应读取货币表单输入流的数量和名称,并以本国货币返回其值。
double amount = 0.0;
std::string currency = " ";
std::cout << "Please enter amount and currency ('usd','eur' or 'rub'):" << std::endl;
std::cin >> amount >> currency;
std::cout << amount << currency << std::endl;
if ( currency == "usd") {
...;
} else if ( currency == "eur" ) {
...;
} else if ( currency == "rub" ) {
...;
} else {
std::cout << "Input error: unknown currency..." << std::endl;
}
我在这个程序中遇到过std :: cin的奇怪问题。输入&#34; 100usd&#34;或&#34; 100rub&#34;该计划回应&#34; 100usd&#34;或&#34; 100rub&#34;分别继续正常工作。但是当我输入&#34; 100eur&#34;它回应&#34; 0&#34;并发出&#34;输入错误...&#34;线。与此同时,如果我输入&#34; 100欧元&#34;,程序会回复&#34; 100eur&#34;并且工作正常。在前两种情况下,如果我放空格是没有区别的。
我做错了什么?
答案 0 :(得分:5)
在100eur案例中,它认为你试图用科学记数法写一个双精度词:1.0e-10
但是无法解析其余部分(因为你对指数“section”无效)。
在其他情况下,它在100(当它达到u / r时)停止,这对双精度有效,因此解析成功。