std :: cin for double和string

时间:2015-01-14 14:28:04

标签: 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的奇怪问题。输入&#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;并且工作正常。在前两种情况下,如果我放空格是没有区别的。

我做错了什么?

1 个答案:

答案 0 :(得分:5)

在100eur案例中,它认为你试图用科学记数法写一个双精度词:1.0e-10但是无法解析其余部分(因为你对指数“section”无效)。

在其他情况下,它在100(当它达到u / r时)停止,这对双精度有效,因此解析成功。