我正在尝试创建一个程序,其中文本以逐字符延迟的方式输出到控制台。 (另外,我对此很陌生,所以我对 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/