c++ - 将字符串转换为 double ,而字符串有 N 位小数,C++

标签 c++ user-input cin

我想根据用户输入创建一个 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/

相关文章:

c++ - while cin.get 在从文件加载时导致无限循环

c++ - 将带有参数的回调函数传递给函数

c++ - 以 SFML 中的移动位置为中心的 View

html - 将用户输入显示为输入值而不进行清理是否安全?

Python - 用户通过 CGI 输入。线程和读取文件

c++ - 从字符串中检测数字而不是字母的方法。 (目前使用istringstream)

c++ - macOS 应用程序文件关联

c++ - Prim 的最小生成树

javascript - 从没有谷歌地理定位的地址获取纬度/经度

c++ - 从 ifstream 读取 stdin/cin 是否安全?