每秒输出一个1,结果等了5秒输出了5个一

我想每秒输出1,结果等了5秒输出了5个一,为啥?
#include <iostream>
#include <unistd.h>
using namespace std;
int main(){
    for(int i=0;i<5;i++){
        cout<<1<<endl;
        sleep(1);
    }
    return 0;
}

结果:
第1秒:

第2秒:

第3秒:

第4秒:

第5秒:

第6秒:
11111

尝试过printf也不行
每秒输出一个1

我已经解决了,在cout后面加个flush


#include <iostream>
#include <unistd.h>
using namespace std;
int main(){
    for(int i=0;i<5;i++){
        cout<<1<<flush;
        sleep(1);
    }
    return 0;
}
 

为什么你的输出结果中还会有 “第1秒” 这种字符输串出?

请问用的什么编译器,程序是正常的,可以没秒打印一个1

img