c++ - 延迟逐个字符地打印一个单词

标签 c++

我正在尝试创建一个程序,其中文本以逐字符延迟的方式输出到控制台。 (另外,我对此很陌生,所以我对 cout 的工作原理不是很了解。)

int main() {
  std::cout << "L";
  waitms(1000); //function that pauses 1 second.
  std::cout << "l";
  waitms(1000);
  std::cout << "a";
  waitms(1000);
  std::cout << "m";
  waitms(1000);
  std::cout << "a";
}

运行此代码时,控制台会等待四秒钟,然后将 Llama 打印到控制台。

如果您将\n 字符添加到字符串的末尾,这可以工作,但它会产生不希望的输出。

Code: (waits four seconds) Llama

Undesired: L (does wait, but adds newlines.)
           l
           a
           m
           a

Desired: L (wait 1 second) l (wait) a (wait) m (wait) a
Llama

有没有办法在没有换行符的情况下弹出流?

最佳答案

您需要刷新输出,例如 std::flush :

std::cout << "L" << std::flush;
waitms(1000);
std::cout << "l" << std::flush;
// ... etc ...

std::cout 通常缓冲控制台输出。通过 '\n' 打印换行符通常会刷新输出,而 std::endl 总是会刷新。这就是您通常不会注意到的原因。但是如果你想延迟打印在一行上,你需要手动刷新控制台输出。

关于c++ - 延迟逐个字符地打印一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45873158/

相关文章:

C++ 删除 base 或 dynamic_cast 指针?

c++ - 在 Eclipse 中将参数传递给 C++ 程序

c++ - 不使用STL函数写一个随机函数

c++ - dyld : Library not loaded:/usr/local/opt/jpeg/lib/libjpeg. 9.dylib OpenCV C++ MacOS

类和指针的 C++ 类型转换

c++ - 有效使用带有两个元素的 CRTP std::variant,但不能再多了

c++ - 按值传递与按右​​值引用传递

c++ - 使用 QString 或字符串调用结构对象

c++ - 无法使用 typedef 结构解析字段 'tile'

c++ - 编译器或定义行为的可能优化