我想从用户输入制作双打矢量。这些代码行通常是我希望他们做的,除了两种情况,如果还有更多,请告诉我。这两种情况是,如果有两个或更多小数位,并且如果有一个或多个空格。第二个小数作为空格。因此,如果用户输入:0.2.0.1或0.2 0.1,我将得到两个小数两位小数,它们将是0.2和0.1。请帮帮我。我想确保我正确地完成这个简单的任务。我是用C ++做的。
非常欢迎任何其他建议。
for(int i = 0; i <= ARRSIZE; i++)
{
cout << "Please enter a decimal value: ";
if (cin >> sumScores)
{
scoresVector.push_back(sumScores);
cin.clear();
cin.ignore();
}else
{
cout << "This is not a double\n";
scoresVector.push_back(0);
cin.clear();
cin.ignore();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
}
答案 0 :(得分:3)
有更好的解决方案来处理线性输入,但它们都需要一些额外的代码。最简单的方法是使用std::getline
读取一行并使用字符串流进行分析。
for (int i = 0; i <= ARRSIZE; i++) {
std::cout << "Please enter a decimal value: " << std::flush;
std::string s;
if (!std::getline(std::cin, s))
break;
std::istringstream is(s);
double d;
if (is >> d >> std::skipws && is.eof()) {
scoresVector.push_back(d);
} else {
std::cout << "This is not a double\n";
scoresVector.push_back(0);
}
}