我希望创建一个函数来一次删除一个字符数组输出。字符数组是预定义的,但是有问题。
void anim_rev(char str[])
{
clrscr();
int i;
for(i = 1; str[i] != '\0'; i++)
{
cout << "\b \b";
delay(25);
}
}
首先对所有迭代执行cout
语句,然后执行delay
。该功能应该每10或25毫秒从屏幕上删除一个字符。
请帮助修复它。
答案 0 :(得分:0)
std::cout
使用缓冲区,通常在有std::endl
时刷新缓冲区。
如果您强行使用flush
中的std::cout
,则应该可以。
以下是如何刷新示例的文档: https://en.cppreference.com/w/cpp/io/basic_ostream/flush
答案 1 :(得分:0)
尝试以下操作,注意每个flush
末尾的cout
。
否则,它将仅在行的末尾或程序的末尾写入。
注意:delay
不是标准功能,因此我改用sleep
。
#include <iostream>
#ifdef WIN32
#include <Windows.h>
#define sleep(X) Sleep(X*1000)
#else
#include <unistd.h>
#endif
using namespace std;
void anim_rev(const char str[])
{
int i;
for(i = 0; str[i] != '\0'; i++)
{
cout << "\b" << " " << "\b"<<flush;
sleep(1);
}
}
int main(void)
{
const char* p="Helooooooo";
cout<<p<<flush;
anim_rev(p);
return 0;
}