因此,我正在读取形式为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以外的所有字母。