我正在做货币兑换练习。程序应从输入流中读取货币的金额和名称,并以本国货币返回其值。
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 的奇怪问题。当输入“100usd”或“100rub”时,程序分别回显“100usd”或“100rub”并继续正常工作。但是当我输入“100eur”时,它会回显“0”并给出“输入错误...”行。同时,如果我输入“100 eur”,程序会回显“100eur”并且工作正常。在前两种情况下,是否添加空格没有什么区别。
我做错了什么?
最佳答案
在 100eur 的情况下,它认为您正在尝试用科学记数法编写一个 double :1.0e-10
,但无法解析其余部分(因为 ur 对于指数无效”部分”)。
在其他情况下,它会停止在 100(当它到达 u/r 时),这对于 double 有效,因此解析成功。
关于c++ - std::cin 用于 double 和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27945250/