c++ - std::cin 用于 double 和字符串

标签 c++ cin

我正在做货币兑换练习。程序应从输入流中读取货币的金额和名称,并以本国货币返回其值。

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/

相关文章:

读取超过 127 个 ASCII 值时 C++ cin 失败

c++ - 从控制台读取一行

c++ - C++ boost::filesystem 如何检测路径是文件还是目录?

C++,始终运行进程或调用可执行文件?

c++ - 使用 "cin"进行用户输入验证

c++ - 从 std::cin 读取输入两次

c++ - ios 无法识别

c++ - 初始化矩阵

c++ - 运行时间比较——相似代码运行速度慢4倍

c++ - CIN 回路不工作