c++中cout与cput()的疑惑

xcncc 2007-03-03 04:45:41
#include <iostream.h>
#include<conio.h>
#include <time.h>

//定义时间延迟函数
void Dtime(double dt) {
time_t current_time;
time_t start_time;

//得到开始时间
time(&start_time);
//延迟处理
do
{
time(¤t_time);
}
while (difftime(current_time,start_time)<dt);
}

//main()函数的定义
void main(void)
{
//声明变量
int i;
time_t current_time;
char *timep;
//循环5次,每隔2秒显示一次时间
for(i=0;i<5;i++) {
time(¤t_time);
timep=ctime(¤t_time);
cout<<"测试打印:"<<timep; //此语句为什么会在最后才出现
cputs(timep);
Dtime(2);
}
}

结果为:
Sat Mar 03 16:34:38 2007
Sat Mar 03 16:34:40 2007
Sat Mar 03 16:34:42 2007
Sat Mar 03 16:34:44 2007
Sat Mar 03 16:34:46 2007
测试打印:Sat Mar 03 16:34:38 2007
测试打印:Sat Mar 03 16:34:40 2007
测试打印:Sat Mar 03 16:34:42 2007
测试打印:Sat Mar 03 16:34:44 2007
测试打印:Sat Mar 03 16:34:46 2007

前面5段全部没问题,2秒出现一次,但是后5段是程序结束时才同时出现的。按照我的理解应该是
测试打印:Sat Mar 03 16:34:38 2007
Sat Mar 03 16:34:38 2007
停2秒
测试打印:Sat Mar 03 16:34:40 2007
Sat Mar 03 16:34:40 2007
停2秒
以下类推
***********
请问下我哪里理解错了,或者cout和cput()在这样的情况下有特殊用途?
...全文
601 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xcncc 2007-03-04
  • 打赏
  • 举报
回复
非常感谢 happytang(一只叫苏格拉底的猪),这个问题实在困饶了我很久!~
rularys 2007-03-04
  • 打赏
  • 举报
回复
学习
happytang 2007-03-04
  • 打赏
  • 举报
回复
或者cout << "测试打印:" << timep << flush;

强行清空缓冲区,并到输出设备

endl是一个操纵符(manipulator),它不但实现了换行操作,而且还对输出缓冲区进行刷新。什么意思呢?原来在执行输出操作之后,数据并非立刻传到输出设备,而是先进入一个缓冲区,当适宜的时机(如设备空闲)后再由缓冲区传入,也可以通过操纵符flush进行强制刷新

说白了可以这样理解endl相当于<< "\n" << flush的简写版本,它先输出一个换行符,再实现缓冲区的刷新
happytang 2007-03-04
  • 打赏
  • 举报
回复
cout << "测试打印:" << timep << endl; //此语句为什么会在最后才出现
因为你没有endl
xcncc 2007-03-04
  • 打赏
  • 举报
回复
我用VC++6.0的,你编译过输出怎么样的?
eg446yzk(乐的毛都开花了!真TMD高兴) ( ) 信誉:100 Blog 2007-3-4 16:09:31 得分: 0 的程序我怎么编译不了,找了半天,没找到clrscr()和window()的头文件。有人说clrscr()在conio.h,可是我已经include了。没用
不想低调 2007-03-04
  • 打赏
  • 举报
回复
你用那个编译器?
eg446yzk 2007-03-04
  • 打赏
  • 举报
回复
函数名: cputs
功 能: 写字符到屏幕
用 法: void cputs(const char *string);
程序例:

#include <conio.h>

int main(void)
{
/* clear the screen */
clrscr();

/* create a text window */
window(10, 10, 80, 25);

/* output some text in the window */
cputs("This is within the window\r\n");

/* wait for a key */
getch();
return 0;
}
xcncc 2007-03-04
  • 打赏
  • 举报
回复
标题好象打错了,是cputs()函数,程序中出现在标出行下面的那行
xcncc 2007-03-04
  • 打赏
  • 举报
回复
汗,我不是说格式,那个标题我随便打进去的,程序是没问题的- -#
不想低调 2007-03-04
  • 打赏
  • 举报
回复
cput()!
xcncc 2007-03-04
  • 打赏
  • 举报
回复
....知道的随便说下哈- -#

65,202

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧