代码之家  ›  专栏  ›  技术社区  ›  Cristián Romo

为什么需要第二个cin.ignore()呢?

  •  5
  • Cristián Romo  · 技术社区  · 16 年前

    std::cin std::cin.ignore() 两次以获得所需的行为。例如:

    #include <iostream>
    
    int main(void)
    {
        int val = 0;
        std::cout << "Enter an integer: ";
        std::cin >> val;
    
        std::cout << "Please press Enter to continue..." << std::endl;
    
        std::cin.ignore();
        std::cin.ignore();  // Why is this one needed?
    }
    

    我也注意到当我不使用 cin 用于实际输入,但仅用于 ignore() 最后打电话,我只需要一个。

    2 回复  |  直到 16 年前
        1
  •  8
  •   Luc Hermitte    16 年前

    我在简化实际发生的事情。

    第一个用于清除提取操作员(>)未消耗的内容。 第二个等待另一个\n。

    the_stream::ignore(std::numeric_limits<streamsize>::max(), '\n'); 在调用std::getline()之前需要

        2
  •  0
  •   dirkgently    16 年前

    真奇怪。你在哪个站台上跑步?根据定义, ignore \r \n --总共两个字符(回车后加换行符)。