C++ 一次打印一个字母。如何?

标签 c++ windows sleep

假设我有一个字符串,其中包含一条消息。如果我想在屏幕上打印它,我可以做 cout<<string, or cout<<"Hello!" .但是消息会立即打印出来。

所以我正在寻找的是一个函数,它将一条消息和一个数字作为输入变量,并使用数字作为延迟器一次打印一个字母的消息。

像这样:

void slow_print("Hello!", 5);这意味着打印每个字母之间有 5 秒的延迟。

不幸的是,我不知道该怎么做(除了延迟,你可以用 Sleep() 函数来做),所以我想出了这个丑陋的解决方案:

string A = "A", B = "B", C = "C", D = "D", E = "E" .... //etcetera...

然后我会声明一个 vector ,其中包含这些字母。然后我可以做一个 for 循环,例如,一次打印一个 vector 单元格。

vect[dimension] = { H,e,l,l,o,_,h,o,w,_,a,r,e,_,y,o,u }

        for (int i = 0; i<dimension; i++)
    { 
      cout<<vect[dimension];
      Sleep(delay_time);
    }

这是我找到的唯一解决方案。它有效,但使用起来非常不舒服。

有没有人有更好的主意? 我希望社区能帮助我:)

感谢您的宝贵时间。

最佳答案

您实际上可以索引 std::string 的单个字符。 您的函数可能如下所示:

void slow_print(const std::string& str, int delay_time) {
    for (size_t i = 0; i != str.size(); ++i) { 
        std::cout << str[i];
        Sleep(delay_time);
    }
}

关于C++ 一次打印一个字母。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30426205/

相关文章:

c++ - 为要保存的文件添加扩展名

windows - 微星/WIX : How to (self-)update a running service

.net - 如何从 Windows docker 容器中的 .NET 应用程序连接到主机上运行的 SQL Server

javascript - 哪种方式更方便在无限循环中执行异步函数,并在每次执行之间进行 sleep (Node.js/Vanilla JS)

c++ - 线程在等待锁定的互斥体时会休眠吗?

C++ vector 构造函数和赋值问题

c# - c++ 中的 string* [] 转换为 c# 中的 string[]

c++ - 使用 sstream 将 std::string 转换为 int

c++ - libpq:我应该使用哪些 lib 文件

c - 为什么 printf() 之后的行调用 sleep() 在打印任何内容之前执行?