我正在制作一个加载类型的函数,所以我想做的是暂停程序几秒钟,然后在循环中恢复执行,使其看起来像一个加载过程。在网上查找时,我发现我可以使用std::this_thread::sleep_for()
来实现这一点(我在linux上这样做(。我面临的问题是,我无法使用r
或任何其他方式来覆盖最后输出的百分比,因为程序一执行就冻结了,但它与n
完美配合,很难理解为什么它与换行序列配合使用,而与r
不配合使用。
我在下面发布了示例代码,有人能告诉我我做错了什么吗?
#include<iostream>
#include<chrono>
#include<thread>
int main()
{
for (int i = 0; i<= 100; i++)
{
std::cout << "r" << i;
std::this_thread::sleep_for(std::chrono::seconds(rand()%3));
}
return 0;
}
我对这个话题有点陌生,经过一番挖掘,我发现我在扰乱话题。但仍然不确定为什么会发生这种行为。
这在我的机器(Windows 10(上运行良好:
#include <iostream>
#include <chrono>
#include <thread>
#include <cstdlib>
#include <ctime>
int main( )
{
std::srand( std::time( 0 ) );
for ( std::size_t i { }; i < 100; ++i )
{
std::cout << 'r' << i;
std::this_thread::sleep_for( std::chrono::seconds( std::rand( ) % 3 ) );
}
}
我建议你写'r'
而不是"r"
,因为这里你只想打印r
字符,而"r"
实际上打印两个字符(r
和