与数字时钟一起工作

Working along with digital clock

下面的程序是一个简单的数字时钟 我希望时间与系统时间持续同步,并将其显示在控制台的顶部,而不让它干扰我的其他工作,因为在这种情况下,您可以看到最后 4 行的 "hello" 永远不会打印为它上面的 while 循环永远不会结束,而且每次循环都会清除屏幕。

我希望我的代码也能在 while 循环之外执行指令,但是 它永远不会到达那个点,因为 while 循环在这个程序中永远不会结束

#include <ctime>
#include <iostream>
#include <windows.h>
using namespace std;

int main()
{


 bool loop = true;


 while (loop)
 {


   time_t now = time ( 0 );
   tm *local = localtime ( &now );

    local->tm_hour -= 6;

    system("cls");
    cout << ctime ( &now ) <<'\n';
    cout<<"check";
    Sleep(1000);


 }
 cout<<"hello";//this is not printed as while loop doesnt ends
  cin.get();

  return 0;


}

循环没有结束的原因是你没有结束它。 您在开始时将 loop 设置为 true,并且只要它保持为 true 就会循环。但是,您实际上从未将其设置为 false。

如果您的目标是创建一个在命令行顶部运行的时钟,这会有点困难,但并非不可能。

基本上,您需要做的是使用像 ncurses to constantly position your cursor on the line you want to print the time to, clear the line using clrtoeol 这样的格式化库,打印时间,然后将光标设置回最后一行。您还必须在接受用户输入并将其发送到 shell 解释器的主循环中放置一些内容,如下所示:

std::string command;
cin >> command;
system(command.c_str());

总的来说,使用 unix date 命令可能更容易,如下所示:

date "%H:%M:%S"

每次你都需要知道现在几点了。