我想根据用户输入创建一个 double vector 。这些代码行通常执行我希望它们执行的操作,但有两种情况除外,如果还有更多情况,请告诉我。两种情况是是否有两位或更多小数位,以及是否有一个或多个空格。第二个小数充当空格。因此,如果用户输入: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');
}
}
最佳答案
有更好的解决方案来处理逐行输入,但它们都需要一些额外的代码。最简单的方法是使用 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);
}
}
关于c++ - 将字符串转换为 double ,而字符串有 N 位小数,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13403049/