C++ C++;-字符数组输出删除循环错误

C++ C++;-字符数组输出删除循环错误,c++,c++11,C++,C++11,我希望创建一个函数来删除字符数组输出,一次一个。字符数组是预定义的,但存在一个问题 void anim_rev(char str[]) { clrscr(); int i; for(i = 1; str[i] != '\0'; i++) { cout << "\b \b"; delay(25); } } void动画版本(char str[] { clrsc(); int i; 对于(i=1;str[i]!=

我希望创建一个函数来删除字符数组输出,一次一个。字符数组是预定义的,但存在一个问题

void anim_rev(char str[])
{
    clrscr();
    int i;

    for(i = 1; str[i] != '\0'; i++)
    {
        cout << "\b \b";
        delay(25);
    }
}
void动画版本(char str[]
{
clrsc();
int i;
对于(i=1;str[i]!='\0';i++)
{

cout
std::cout
使用缓冲区,通常在存在
std::endl
时,它会刷新缓冲区

如果您强制
std::cout
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;
}
#包括
#ifdef WIN32
#包括
#定义睡眠(X)睡眠(X*1000)
#否则
#包括
#恩迪夫
使用名称空间std;
无效动画版本(常量字符字符串[])
{
int i;
对于(i=0;str[i]!='\0';i++)
{

你能不能更准确地回答你的问题?我们需要猜测你需要做什么。请不要说循环逻辑是正确的,当你要求社区告诉你它有什么问题。为什么不只是“\b\b”立即?你能添加更多的上下文吗?你如何运行它?预期的输出和实际输出是什么?@siriff首先执行块中的第一条语句,这实际上一次删除所有文本,然后执行
延迟执行
,这不是我需要的。@Ayxan之前有几个不同的版本到了这里,仍然是错误。它在main()函数中运行。它应该每隔10或25毫秒从输出屏幕中删除一个字符。为什么要用
clrsc()清除屏幕在删除字符之前,是否还有什么东西要删除?我用C++ 11来编码,它不<代码> STD::CUT< /Cord> @ DrSkk?什么?<代码>:ST::CUT/<代码>是C++语言的一部分,1998!@西蒙请格式化代码,例如在后台设置变量和其他编程相关术语(例如代码> STD::CUT/<代码>)(C++ C++ C++代码)我知道,但是我也使用Turbo C++ IDE,它是一种古老的,不支持<代码> STD::CUT。学习了硬的方法。@ DARSK Turbo C++不支持任何C++。不是C++ 11,不是C++ 98,不是任何。它使用了已经灭绝的非标准C++ 1992变体。<代码> Delay.()当您包含
dos.h
@DarshK时可以使用
大多数IDE都不支持它。无论如何,您应该添加
刷新
该代码不完全适用于多行数组字符串。@DarshK正确,打印
\b
仅适用于当前行。它不会取消换行。那么如何取消换行呢?