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++)
{
coutstd::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
仅适用于当前行。它不会取消换行。那么如何取消换行呢?