[英]Printing on same line in c++
我试图在同一行写时间而不是堆叠输出。 我似乎无法让它工作。
这就是我所拥有的:我认为"\\r"
会让它在同一行重印,但这不起作用。 我也试过printf("\\r");
那也不起作用。
任何人都可以帮我弄清楚如何使这个工作?
void countdown(int time)
{
int h = (time / 3600);
int m = (time / 60) - (h * 60);
int s = time % 60;
std::stringstream ss;
ss << h << ":" << m << ":" << s;
std::string string = ss.str();
cout << "\r" << string << endl;
}
cout << "\r" << string << endl;
endl
将光标移动到下一行。 尝试用std::flush
替换它,这样可以确保输出发送到终端。 (你还应该#include <iomanip>
并使用std::setw(2)
/ std::setfill('0')
来确保你显示的文本是恒定宽度,否则说时间从:
23:59:59
至
0:0:0
来自较早时间的尾随“:59”当前未被覆盖或清除(如果您的终端有一个,您可以写一些空格或发送清晰的行尾字符序列,但固定宽度会更多感)。
最终:
std::cout << '\r'
<< std::setw(2) << std::setfill('0') << h << ':'
<< std::setw(2) << m << ':'
<< std::setw(2) << s << std::flush;
endl
插入换行符并刷新流。
cout << "\r" << string ; //works
尝试这个:
cout << "\r" << string;
endl
插入换行符并刷新流。
我想先提供一些有用的信息。
您正在插入std::endl
,它在下一行打印下一个字符串。
std::endl
是换行符\\n
后跟std::flush
以下换行符\\n
和std::flush
等同于std::endl
。
std::cout << printFunction() << '\n' << std::flush;
就像
std::cout << printFunction() << std::endl;
现在删除std::endl
将在同一行中打印字符串。
cout << "\r" << string;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.