C ++中的控制台程序[重复]
Posted
技术标签:
【中文标题】C ++中的控制台程序[重复]【英文标题】:Console Program in C++ [duplicate] 【发布时间】:2013-08-26 21:10:30 【问题描述】:我最近在搞乱 C++ 控制台编程。我想知道是否有一种方法可以让文本在控制台上显示一段特定的时间,然后转到更多文本。本质上,我正在尝试创建一个计时器对象。或者,如果您熟悉 python,则类似于
import timer
print "Hello World"
timer.sleep(2)
print "Hello Again World"
timer.sleep(2)
如果有人能帮我解决这个问题,我将不胜感激,在此先感谢。
【问题讨论】:
sleep for milliseconds 或 ***.com/questions/3379139/… 或 ***.com/questions/2252372/… 的可能重复项 由于某种原因,当我使用睡眠功能时, sleep(x 毫秒) 它说,该功能无法识别。我必须首先包含一个特定的流才能使用睡眠功能吗? ***.com/questions/1658386/sleep-function-in-c 已经有人讨论过这个话题了。 en.cppreference.com/w/cpp/thread/sleep_for 我在任何名为 timer 的 Python 模块中都找不到sleep
函数;你在说哪个模块?这个问题真的是关于在一定时间内显示文本吗?时间过去后,Python 模块是否真的 remove 打印到控制台的任何内容?还是你真的在问如何延迟执行你的程序一段时间,显示的文字完全不相关?
【参考方案1】:
在 C++11 之前,没有标准的方法可以做到这一点,要么使用系统库,要么使用为您包装系统库的跨平台库。在 C++ 11 中,它需要线程和 chrono 库来完成它。
#include <iostream>
#include <chrono>
#include <thread>
int main()
std::cout << "Hello world" << std::endl;
std::chrono::milliseconds twoSeconds( 2000 );
std::this_thread::sleep_for( twoSeconds);
std::cout << "Hello Again World" << std::endl;
【讨论】:
...其中“跨平台库”代表boost【参考方案2】:没有内置的 C++ 功能,您必须求助于特定于平台的功能。
在 POSIX 系统(Linux、Mac OS X、BSD...)上,您可以使用 sleep
来自 <unistd.h>
(用于延迟秒分辨率)或 nanosleep
来自 <time.h>
(标称分辨率为纳秒,但在实践中更糟)。而在 Windows 上,您可以使用来自<windows.h>
的Sleep
API(标称分辨率为毫秒)。
---编辑---
在 cmets 中指定,在 C++11 中有 std::this_thread::sleep_for
。
【讨论】:
C++11中有:std::this_thread::sleep_for
.
非常感谢,我最终像您所说的那样使用了 Windows 的 Sleep API。我还能够制作一个传递变量 s 的函数,并将其乘以一千(毫秒到秒的等效数),然后基于该变量运行睡眠函数。这样一来,人们就可以轻松地定义他们希望函数运行多少秒,而不是以毫秒为单位计算出来。以上是关于C ++中的控制台程序[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 上从 C 中的另一个程序启动一个独立程序(在单独的控制台窗口中)?
如何在Visual Studio代码中完成后暂停控制台c ++应用程序