是否可以为 std::cin 设置超时?

2023-11-23

是否可以为 std::cin 设置超时? 例如,std::cin 在 10 秒内没有收到任何数据 - 它会引发异常或返回错误。

Edited:

那么定时器呢Boost library?据我所知,它是便携式图书馆。是否可以要求 Boost 库的计时器在预定义的时间段后抛出异常?我想它可以解决这个问题。


无法设置超时时间std::cin以便携的方式。即使诉诸非便携式技术,这样做也不是完全微不足道的:您将需要替换std::cin的流缓冲区。

在 UNIX 系统上,我将替换使用的默认流缓冲区std::cin通过使用文件描述符的自定义文件0读取输入。要实际读取输入,我会使用poll()检测输入的存在并为此函数设置超时。取决于结果poll()我要么读取可用的输入,要么失败。然而,为了可能处理未转发到文件描述符的键入字符,关闭在输入换行符之前完成的缓冲可能是合理的。

使用多个线程时,您可以创建一个可移植的过滤流缓冲区,该缓冲区使用一个线程读取实际数据,另一个线程使用定时条件变量,等待第一个线程发出其收到数据的信号或超时到期。请注意,您需要防止虚假唤醒,以确保在没有输入时确实达到超时。这将避免修改数据读取的实际方式std::cin尽管它仍然取代了使用的流缓冲区std::cin使功能可以通过此名称访问。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以为 std::cin 设置超时? 的相关文章

  • -ffast-math 可以安全地用于典型项目吗?

    在回答我建议的问题时 ffast math 有评论指出这是危险的 我个人的感觉是 在科学计算之外 是可以的 我还假设严肃的金融应用程序使用定点而不是浮点 当然 如果你想在你的项目中使用它 最终的答案是在你的项目上测试它 看看它有多大影响 但
  • C++ STL 映射,std::pair 作为键

    这就是我通过地图定义的方式 std map
  • 地图类容器的专用功能

    我想要专门为矢量和地图之类的容器设计一个函数模板 对于向量 我可以像下面那样做 但我不知道如何才能有一个专门版本的函数 该函数仅用于像地图这样的容器 include
  • 没有配置身份验证处理程序来处理该方案

    这是一个非常烦人的问题 我在我的 asp net core 项目上设置 cookie 身份验证 有时会出现此错误 有时不会 没有图案 它只是开始抛出错误 然后突然停止 然后再次开始 例外情况是 InvalidOperationExcepti
  • 有关shared_ptr的竞态条件示例

    为什么没有竞争条件代码片段 https godbolt org z nEYPYqdqK below include
  • 以编程方式更新 Wifi 网络

    我正在尝试创建一个程序 当某个 wifi 网络在范围内时 该程序会连接到该网络 即使已经连接到另一个 wifi 也是如此 我在用着简单Wifi https github com DigiExam simplewifi 基本上效果很好 除了在
  • 在编译输出中添加程序集绑定 (app.config)

    如果我编译应用程序 则会在输出中自动添加程序集绑定 具体的程序集绑定不在app config在 Visual Studio 中但在创建的应用程序配置中 有什么办法可以检查为什么会自动添加程序集绑定吗 选项AutoGenerateBindin
  • 为什么 xcode IDE 认为 `friend` 是保留字

    我一直在开发一个个人项目 并在我创建的新类中包含以下代码 property readonly getter isFriend BOOL friend 它似乎没有任何问题 当我构建它时 它可以编译得很好 但是当我们在xcode IDE看起来像
  • 在 C++ 中,为什么 const 也可以工作时编译器选择非常量函数? [复制]

    这个问题在这里已经有答案了 例如 假设我有一堂课 class Foo public std string Name m maybe modified true return m name const std string Name cons
  • 如何在 C++11 中返回类成员向量

    我读了几篇关于如何从方法返回向量的文章 其中包括 c11 右值和移动语义混淆返回语句 https stackoverflow com questions 4986673 c11 rvalues and move semantics conf
  • 大小为 k 的非连续子序列的最大值的最小值

    在开始之前 我希望这个问题不是重复的 我发现了几个类似的问题 但它们似乎都没有描述完全相同的问题 但如果它是重复的 我会很高兴看到一个解决方案 即使它与我的算法不同 我一直在尝试回答这个问题 https stackoverflow com
  • 如何使用 itextsharp 更改 PDF 公式的按钮图标?

    我目前正在尝试使用 itextsharp 填写预定义的表单 除了添加图像之外 一切正常 这之前已经在 Adob e 的 FDF 工具包中运行过 该工具包已编译为 NET 1 1 这不再适用于 NET 4 0 我改用了 itextsharp
  • ArrayList 有什么问题?

    最近我问了一个关于 SO 的问题 其中提到了可能使用 c ArrayList 来解决问题 有人评论说使用数组列表不好 我想了解更多有关此的信息 我以前从未听说过关于数组列表的这种说法 有人可以带我了解使用数组列表可能出现的性能问题吗 C n
  • 为什么使用 .AsEnumerable() 而不是转换为 IEnumerable

    扩展方法之一IEnumerable
  • 如何检查日期时间是否发生在今天?

    有没有比下面的代码更好的 net 方法来检查 今天 是否发生了 DateTime if newsStory WhenAdded Day DateTime Now Day newsStory WhenAdded Month DateTime
  • asio::this_coro::executor 的实现是什么

    在协程函数中 我们可以添加auto ex co await asio this coro executor 获取该协程的执行者 但当我想了解它的定义时 我发现了这个 Awaitable type that returns the execu
  • C# 中的 mshtml.HTMLDocumentClass

    在 C 中 我设法从 InternetExplorer 对象获取整个 HTMLDocumentClass 导航到某个 URL 然而 在 Visual Studio 2008 的调试模式下 该特定 URL 的 HTMLDocumentClas
  • 对 Action 方法的两个并行 ajax 请求排队,为什么?

    我正在使用 ASP NET MVC 开发一个视频网站 我希望在我的应用程序中拥有的一项功能是转码视频 但由于转码过程可能非常耗时 我想向客户端用户展示该过程的进度 因此 我的架构是使用一个控制器操作来处理整个转码过程 并将其进度写入存储在服
  • C# 使用 .Equals() 比较两个 double

    我使用 ReShaper 当我用 比较两个双精度值时 它建议我应该使用 Math 具有公差的 ABS 方法 看 https www jetbrains com help resharper 2016 2 CompareOfFloatsByE
  • 将二进制长字符串转换为十六进制 C#

    我正在寻找一种将长二进制字符串转换为十六进制字符串的方法 二进制字符串看起来像这样 0110011010010111001001110101011100110100001101101000011001010110001101101011 我

随机推荐

  • Swift 通用数组函数查找不匹配项的元素的所有索引

    Swift 3 尝试编写一个通用数组扩展来获取不等于值的项目的所有索引 example let arr String Empty Empty Full Empty Full let result Int arr indexes ofItem
  • 在 Vue 模板中使用“this”?

    我脑子里一片混乱 我不知道为什么我看到了我们可以使用的地方this在 Vue js 模板中 现在我不知道我必须使用哪个 我在这里测试一些案例 new Vue el app data function return myVar test me
  • 打印具有长水平表格的页面的样式表

    我有一个页面可以在长水平表中吐出数据库数据 我需要把它打印得很好 这样它就不会被切断 有小费吗 将表格更改为多行水平表格 交换行 列 建议用户切换到横向模式 AFAIK 在当前的浏览器中没有办法以编程方式做到这一点 CSS3 定义 page
  • Pygame 中正在进行的两个音乐曲目之间的淡入淡出

    我的意图是两首音乐曲目 性质相似 彼此之间淡出在不同的时间 当发生这种淡入淡出时 一个音乐曲目应在短时间内从最大音量淡入静音 同时另一首曲目应从 0 淡出到 100 并继续播放从同一时间索引 他们必须能够做到这一点动态地任何时候 当某个动作
  • 如何使用MOQ框架为抽象基类创建Mock?

    我想为 MyClass 编写单元测试 但它的基类是一个抽象类 public class MyClass AbstractBaseClass 我想模拟抽象基类 以便在创建要测试的 MyClass 实例时可以跳过其构造函数中的一些逻辑 无论如何
  • R nls 奇异梯度

    我尝试搜索有关此主题的其他线程 但没有一个修复对我有用 我有一个自然实验的结果 我想显示符合指数分布的事件连续发生的次数 我的R shell粘贴在下面 f lt function x a b a exp b x gt x 1 1 2 3 4
  • 我可以在 JavaScript 中压缩数据吗?

    我正在使用一些相当繁重的 AJAX 其中包含从客户端到服务器的大量数据 在发送到服务器之前如何压缩数据 主要是纯文本 那么如何在服务器端解压数据呢 jSEND 似乎正是这样做的 有人用过吗 已删除损坏的链接 导致垃圾邮件登陆页面 jsend
  • 如何在 angular.js 中捕获具有任意数量斜杠的 URL?

    我想创建一个处理文件的有角度的网站 用户可以在文件系统树中导航 就像在 github 上一样 github com angular angular js tree master path to my file js 我想捕捉到这一点path
  • 创建一个协程来淡出不同类型的对象

    您好 我正在尝试创建一个统一的协程 它将处理各种对象的淡入淡出 到目前为止 我能够获得我想要的不同类型的 alpha 值 但对于如何在 lerping 后设置新颜色 我陷入了死胡同 这是我的代码 public static IEnumera
  • MVC3 部分视图和模型不回发更改

    我有一个模型 其中包含可以修改的项目集合 我使用部分视图呈现集合 该视图又使用 EditorForModel 输出集合中每个元素的 HTML model Footy Models EventModel h2 Model Team1Name
  • 如何使用 ng-click 进行重定向

    我正在尝试构建超级简单的 AngularJS 应用程序 将凭据接受到两个文本框中 然后使用双向绑定将按钮单击重定向到其中包含两个变量的 url 我的问题是 我可以让它工作一个简单的 a href 或者也许 ng href 但由于某种原因 无
  • 如何在 C 中公开 C++ 函数指针?

    我在 C 中定义了两种类型的函数指针 如下所示 typedef void CallbackFn bool std string py array t
  • Java Web 服务/JAXB - 抽象超类

    我有一个包含 JAXB 带注释的类和抽象超类的包 我想在 Web 服务接口中使用这个超类 所以我 可以将任何子类作为参数传递 当我这样做时 会抛出异常 javax xml ws WebServiceException javax xml b
  • android动画将视图移动到另一个视图

    我有两个不同布局的视图 我想将一个视图移动到另一个视图 我的代码有什么问题吗 Y 动画播放错误 第一个视图位于片段的布局中 第二个视图位于状态栏中 int p1 new int 2 int p2 new int 2 viewOne getL
  • 是否有与 MySql 等效的 Profiler? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 Microsoft SQL Server Profiler 是 SQL Trace 的图形用户界面 用于监视数据库引擎或 Analysis Serv
  • Azure - BlobStore SAS uri 命令执行失败。

    当我尝试使用 Azure 门户创建云服务的生产部署并尝试上传包 cspkg 文件 时 我收到错误消息 BlobStore SAS uri 命令执行失败 详细信息 状态代码 0 状态文本 无 当我尝试上传配置 cscfg 文件 时 我收到相同
  • 初始化char数组时,剩余空间是零填充还是未初始化?

    Given char foo 1024 bar 这将初始化 foo 以包含 b a r 0 剩余的 1020 个字符是零初始化还是未初始化 我认为上面的内容与 char foo 1024 b a r 0 相同 与聚合的初始化一样 任何未提及
  • 如何仅将 Spring Converter 用于某些控制器?

    我有一个可以工作的 c 转换器 public class StringToLongConverter implements Converter
  • 通过 1 次提交回滚本地和远程 git 存储库 [重复]

    这个问题在这里已经有答案了 我读过有关该主题的类似帖子 但我一生都无法弄清楚如何正确执行此操作 我签入了大约 1000 个我不想要的文件 我不想通过 1by1 将它们全部从存储库中删除 我有一个遥控器master Branch 我有当地的m
  • 是否可以为 std::cin 设置超时?

    是否可以为 std cin 设置超时 例如 std cin 在 10 秒内没有收到任何数据 它会引发异常或返回错误 Edited 那么定时器呢Boost library 据我所知 它是便携式图书馆 是否可以要求 Boost 库的计时器在预定