注册 登录
编程论坛 C++教室

问问题,谢谢!

当当响 发布于 2010-08-18 16:19, 615 次点击
一个小程序,从0分0秒隔一秒显示时间,程序正常
#include<iostream.h>
#include<iomanip>
#include<windows.h>

class time
{
public:
    time(){minute=0;second=0;}
    time(int m,int s):minute(m),second(s){}
    void operator ++();
    void display (){
        cout<<minute<<":"<<second;     
        cout<<endl;                         //删掉为什么没反应?
    }
private:
    int minute;
    int second;
};
void time::operator ++()
{
    if(++second==60)
    {minute++;second=0;}
   
}

int main()
{
    time t;
loop:
    t.display();
    ++t;
    Sleep(1000);
    goto loop;
}
把//那一行删掉后为什么什么都不显示了?不换行有什么关系? 我用的是VC++
8 回复
#2
2010-08-18 18:36
cout,是一个流输出符,只有结尾有了它,才能从内存中读取数据。虽然有换行符的作用,但是我认为还是每次输出都要加上。
#3
ciweitou1632010-08-18 19:27
是不是endl能刷新缓冲区的原因?期待确切答案...
#4
lisypro2010-08-18 21:03
应该是控制台的原因
介绍一个学习VC的群11619730
收费的群,所以有资学老师解答问题,有问必答。
#5
ToBeOOP2010-08-18 23:28
似乎是因为endl可以刷新缓冲区,只有刷新了缓冲区才能显示出内容吧....
#6
pangding2010-08-19 00:50
嗯,endl 是可以刷缓冲区。如果只想刷不想换行的话,用 flush。
#7
towhee2010-08-20 13:26
学习了
#8
holychild2010-08-22 15:57
能显示的,但你要等,因为你程序用了Sleep(1000);这期间程序是被挂起的。不信你把Sleep(1000);改成Sleep(1);试试,是对的,可以显示的。
#9
carmeloyin2010-08-22 23:41
time(int m,int s):minute(m),second(s){}
    void operator ++();
这句应该怎么理解啊??
1