提取运算符错误地读入0,但在类似情况下却读入正确的数字

时间:2019-04-13 19:19:37

标签: c++

因此,我正在读取形式为1U = 1.2A的用户输入,唯一的变化是A是从B到E的不同字母。我将收到7个这样的输入。从A到E的每个字母一个。我需要提取A旁边的浮点数。因此,在前面的示例中,我尝试获得1.2。通过将用户输入放到istringstream变量中并从中提取我需要的内容来实现此目的


#include <iostream>
#include <sstream>
using namespace std;

string rateInfo;
istringstream inSS;
double rate[7], temp;

for (int i = 0; i < 7; i++) {
    getline(cin, rateInfo);
    inSS.clear();
    inSS.str(rateInfo);
    inSS.ignore(5);
    inSS >> temp;
    rate[i] = temp;
}   

此代码实际上大部分有效。除了当i = 4时。我在i = 4时正在测试的特定输入为1U = 5.6E。而不是读取5.6,而是读取0。

我还发现,如果输入1U = 5.6而不是1U = 5.6E,我的代码可以正常工作。我还测试了与E一起使用的不同数字,例如6.54和1.23,但除E之外,其他所有功能仍然有效。因此,似乎字母E破坏了我的代码。

我知道读操作符读为0是流处于错误状态时可能发生的事情之一,但就我的一生而言,我无法弄清楚到底是什么错误。尤其是因为它适用于E以外的所有字母。

0 个答案:

没有答案