gpt4 book ai didi

c++ - 有没有办法在一段时间内阻止 cin 输入,然后再次允许输入?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:49:55 25 4
gpt4 key购买 nike

我正在编写一个基于文本的游戏,其中通过在每个字符之间休眠几毫秒来打印发送到终端的消息,然后像这样从玩家那里获取输入:

#include <iostream>
#include <unistd.h>
#include <climits>
int main() {
std::string line;
std::string message = "LotsAndLotsAndLotsAndLotsAndLotsAndLotsAndLotsAndLotsAndLotsAndLotsAndLotsAndLotsAndLotsAndLotsAndLotsAndLotsOfText\n";
for(char c : message) {
usleep(1000 * 40);
std::cout << c << std::flush;
}

std::getline(std::cin, line);
std::cout << line << "\n";

return 0;
}

问题是,如果玩家在打印消息时键入任何内容,getline 将拾取它。

我不能使用 cin.ignore,因为我不知道玩家在等待消息时可能会输入多少个字符或什么类型的字符。有办法解决这个问题吗?

最佳答案

这在一定程度上是一个推测性的答案,因为我还没有实际测试过。可以创建一个循环来阻止代码的其他部分执行,直到循环完成为止,该循环一直运行到您完成消息为止。这个循环将使用一个参数/标志,例如 eof 或者(我忘记了这是否真的可能)类似行尾消息的东西。同时,您可以将获取输入的代码作为一个单独方法的一部分,这样该方法只会在您希望调用它时被调用。

关于c++ - 有没有办法在一段时间内阻止 cin 输入,然后再次允许输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31006344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com