none
关于cin的问题 RRS feed

  • 问题

  • 以下两种输入,请问有什么区别?
    void main()
    {
      char a, b; 
      cin >> a >> b;  //输入ab和回车
    }
    
    void main()
    {
      char a, b;  
      cin >> a >> b;  //输入a和回车,再输入b和回车
    }
    
    如果没有区别,那么:

    void main()
    {
      char a, b, c, d;
      cin >> a >> d; //输入as和回车
      cin.unget();
      cin.unget();
      cin >> b;
      cout << b;   //输出a  
    }
    
    void main()
    {
      char a, b, c, d;
      cin >> a >> d; //输入a和回车,再输入s和回车
      cin.unget();
      cin.unget();
      cin >> b;
      cout << b;   //输出乱码
    }
    
    请问为什么两次输出会不同?


    2011年4月7日 13:00

答案

  • 一般而言,保证能够在下一次读之前放回最多一个值,也就是说,不保证能够连续调用putback或unget而恢复原来的流状态。
    您可以调试看看每次调用cin.unget()以后cin流的状态是否有效cin.fail()是否为TRUE,cin.fail为TRUE,就表示流状态错误了
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 kof2001kop 2011年4月9日 11:22
    2011年4月8日 1:54
    版主