使用 range-v3 读取逗号分隔的数字列表

2023-12-08

我想使用范围(我使用 range-v3 实现)来读取输入流,该输入流是逗号分隔的数字列表。如果没有范围,这是微不足道的,但是...... 这就是我认为解决这个问题的直接方法:

auto input = std::istringstream("42,314,11,0,14,-5,37");
auto ints = ranges::istream_view<int>(input) | ranges::view::split(",");
for (int i : ints)
{
    std::cout << i << std::endl;
}

但这无法编译。我已经尝试了很多变体,但似乎没有任何效果,我想这在几个方面都是错误的。有人可以告诉我我做错了什么并解释应该如何做吗?

提前致谢!


What

ranges::istream_view<int>(input)

所做的就是生成一个大致相当于此协程的范围(即使您不了解 C++20 协程,希望这个示例足够简单,足以说明问题):

generator<int> istream_view_ints(istream& input) {
    int i;
    while (input >> i) {  // while we can still stream int's out
       co_yield i;        // ... yield the next int
    }
}

这里有两个重要的点:

  1. 这是范围ints,所以你不能split它在一根绳子上。
  2. 这使用普通流>>,它不允许您提供自己的分隔符 - 它仅在空格处停止。

共,istream_view<int>(input)给你一系列int在您的输入中,包含一个int: just 42。下一个输入将尝试读入,并失败。


为了获得分隔输入,您可以使用getlines。这将为您提供一系列string与您提供的分隔符。它用std::getline内部。实际上,它就是这个协程:

generator<string> getlines(istream& input, char delim = '\n') {
    string s;
    while (std::getline(input, s, delim)) {
        co_yield s;
    }
}

然后你需要转换这些strings to ints。像这样的事情应该可以解决问题:

auto ints = ranges::getlines(input, ',')
          | ranges::view::transform([](std::string const& s){ return std::stoi(s); });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 range-v3 读取逗号分隔的数字列表 的相关文章

  • C++:头文件中全局函数的多重定义错误

    该函数是全局的 在头文件中定义 暂时地我想把它留在那里 头文件还构成一个具有内联函数的特定类 其中一个函数调用this全局函数 源文件不包含任何有问题的全局函数 有关错误原因的任何提示吗 如果有人感兴趣的话我可以发布代码 mainwindo
  • 在两个 .cpp 文件之间定义全局变量 [重复]

    这个问题在这里已经有答案了 如何在 A cpp 和 B cpp 之间共享 全球化 bool 变量 其中它们都不包含其他 h 文件 他们有其他联合头文件 但彼此没有 我可以在这些共享标头中定义全局变量吗 Thanks 我可以在这些共享标头中定
  • 实体框架中的重复键异常?

    我试图捕获当我将具有给定用户名的现有用户插入数据库时 引发的异常 正如标题所说 我正在使用 EF 当我尝试将用户插入数据库时 引发的唯一异常是 UpdateException 如何提取此异常以识别其是否是重复异常或其他异常 catch Up
  • ProtoBuf-net AsReference 需要 Activator.CreateInstance 中的公共构造函数吗?

    在我的两门课程中 看起来像这样 最少 using System using System Collections Generic using System Collections using System ComponentModel us
  • .NET Windows 服务中调用 C# 的 wait 的 I/O 回调是否可以不阻塞?

    我知道在 ASP NET 中 当使用 wait 时工作线程会返回到池中 而 I O 发生在后台 这对于可扩展性非常有用 我的 Windows 服务是一个套接字服务器 它使用 Begin End 样式的异步套接字 I O 混合我的魔法 我知道
  • 如何将 C++ 类包装在基于 C 的 dll 或基于 CLI 的 dll 中?

    我被告知将我用 C 编写的类导入到 dll 中 然后在 c 应用程序中使用该 dll 下列的本指南 https stackoverflow com questions 4555961 how to use a class in dll我创建
  • 在 MVC 类上创建主键字段

    我是 MVC 和 C 新手 我只是偶然发现它并发现它很有趣 我遇到了一个不允许我继续的问题 这是我的代码 using System using System Collections Generic using System Linq usi
  • 此插件导致 Outlook 启动缓慢

    我正在使用 C NET 4 5 开发 Outlook Addin 项目 但部署后 有时 Outlook 会禁用我的插件 并显示此消息 这个插件导致 Outlook 启动缓慢 我不知道我的插件出了什么问题 这只有很少的代码 并且ThisAdd
  • 为什么 LinkedList 通常比 List 慢?

    我开始在我的一些 C 算法中使用一些 LinkedList 而不是列表 希望能够加快速度 然而 我注意到他们只是感觉更慢 像任何优秀的开发人员一样 我认为我应该尽职调查并验证我的感受 所以我决定对一些简单的循环进行基准测试 我认为用一些随机
  • 使用 QSet 作为 Qt 地图容器中的键

    我需要一个映射 其中键是唯一的 并且每个键都是一组或自定义 POD 结构 其中包含 3 个数据项 这些值只是指向对象实例的指针 从阅读Qt 的 QMap 与 QHash 的文档 http qt project org doc qt 4 8
  • 隐形打开的弹出窗口

    第二天就解决这个问题 要重现 请创建新的 WPF 应用程序 xaml
  • C# ConfigurationManager 从 app.config 检索错误的连接字符串

    我有一个简单的 WinForms 应用程序 它最终将成为一个游戏 现在 我正在研究它的数据访问层 但遇到了障碍 我创建了一个单独的项目 名为DataAccess在其中 我创建了一个本地 mdfSQL Server 数据库文件 我还创建了一个
  • 禁用除滚动之外的 DataGridView

    我如何配置 datagridview 以便用户只能在行中移动并使用滚动 而没有其他 如果我禁用网格不允许我使用滚动 将您的 datagridview 设置为只读 这将禁用任何编辑 dataGridView1 ReadOnly true 在你
  • 我们应该使用 Eval 还是 Databind 事件?

    当使用 Asp Net 并使用 ListView 等控件创建网站时 使用 Eval 命令是一个好习惯吗 还是应该在 databind 事件中填充文字和数据 取决于您是否想在更新事件上写回数据 在这种情况下数据绑定 如果您只想读取该数据 可以
  • 在非指针变量和类成员上放置 new

    考虑以下示例 include
  • 在 C# 中生成随机值

    如何使用以下命令生成随机 Int64 和 UInt64 值RandomC 中的类 这应该可以解决问题 这是一个扩展方法 因此您可以像调用普通方法一样调用它Next or NextDouble上的方法Random目的 public stati
  • 为什么 GCC 6.3 在没有显式 C++11 支持的情况下编译此 Braced-Init-List 代码?

    我有一个问题大括号括起来的列表的不同含义 https stackoverflow com q 37682392 2642059 我知道C 03不支持C 11initializer list 然而 即使没有 std c 11编译器标志 gcc
  • Intel 和 AMD 处理器有相同的汇编程序吗?

    C语言被用来编写Unix以实现可移植性 使用不同编译器编译的同一个C语言程序会产生不同的机器指令 为什么 Windows 操作系统能够在两者上运行Intel https en wikipedia org wiki Intel and AMD
  • C 中的静态和动态绑定(严格来说是 C,而不是 C++)是什么?

    我最初对发布这个问题感到担忧 以免它重复 但即使在谷歌搜索了许多关键字之后 我在 StackOverflow 上找不到任何解释 C 的静态和动态绑定的链接 尽管有 C 的问题和答案 但是都涉及classes以及显然不适合 C 的东西 Sta
  • 网页执行回发时如何停止在注册表单上?

    我正在做我的最后一年的项目 其中 我在一页上有登录和注册表单 WebForm 当用户点击锚点时Sign Up下拉菜单ddlType 隐藏 和文本框 txtCustName txtEmail and txtConfirmPassword 显示

随机推荐

  • Python - 找不到记录器“OpenGL.error”的处理程序

    好吧 这是什么 为什么在Win2003服务器上会出现 而在WinXP上却不会 它似乎根本不影响我的应用程序 但当我关闭应用程序时 我收到此错误消息 这很烦人 错误消息应该如此 我正在使用 pyOpenGl 和 wxPython 来做图形工作
  • 使用 Excel VBA 事件检测单元格的合并/取消合并?

    我正在尝试找到一种方法来检测合并 或取消合并 单元格的立即使用 更改事件会触发 选择也不会更改 我已经尝试过其他一些 但合并时似乎没有事件触发 我觉得很奇怪 我在更改事件中的代码当前根据单元格的内容更改 Interior Color 如果单
  • ASP:我无法将某些字符从 utf-8 解码为 iso-8859-1

    我用这个函数来解码UTF 8 function DecodeUTF8 s dim i dim c dim n i 1 do while i lt len s c asc mid s i 1 if c and H80 then n 1 do
  • tidyr - 获得组合的独特方式(仅使用 tidyverse)

    我想使用以下方法获取数据帧的唯一字符串列的所有唯一成对组合tidyverse 理想情况下 这是一个虚拟示例 library tidyverse a lt letters 1 3 gt tibble as tibble a gt A tibb
  • 中缀数据构造运算符的解释

    我正在阅读这篇有趣的博客文章 名为解析 不验证它包括 为此 我们需要一个表示非空列表的类型 幸运的是 Data List NonEmpty 中现有的 NonEmpty 类型正是如此 它有以下定义 data NonEmpty a a a 请注
  • Perl 错误地抱怨名称“main::FILE”仅使用一次

    我将程序简化为以下小片段 但我仍然收到消息 名称 main FILE 仅使用一次 可能有拼写错误 usr bin perl w use strict use autodie qw open close foreach my f ARGV l
  • VBA根据形状选择形状

    How do I select all shapes array range where the value in Cell A Shape TopLeftCell Row 0 阵列应仅包含形状 2 和 3 如上图所示 作为替代方案 您可以
  • @class我可以知道这个的正确用法吗

    任何人都可以使用 class 指出文档或详细讨论 我一直在使用这个 但还没有真正完全理解它 我想更多地了解它并充分理解它 先感谢您 class习惯于declare一类 本质上是告诉编译器 嘿 有一个具有这个名称的类某处在源代码中 定义稍后会
  • 由于 ____chkstk_darwin,在 Catalina 上使用 Deployment 10.10 编译的 MacOS 应用程序在 < HighSierra 版本上崩溃

    我们有一个多平台桌面应用程序 它使用用 C 编写的通用组件 该组件使用 OpenSSL 和 PocoProject 两者都静态链接到库中 在 macOS 上 我们有一个用 Objective C 编写的小型框架 它本质上是 C 代码的单个
  • Java ImageIO:无法读取输入文件

    我不知道为什么这不起作用 但程序说它无法读取输入文件 顺便说一句 这也在 Ubuntu 中运行 这是示例代码 URI url new URI images GUI TitleScreen PNG File file new File url
  • 如何使用javascript找到浏览器的高度,包括工具栏和按钮?

    有没有办法通过浏览器的工具栏和按钮来查找浏览器高度 而不仅仅是窗口或文档高度 对于视口的大小 您可以使用window innerWidth and window innerHeight 对于整个窗户 包括装饰 使用window outerW
  • 如何设置div的高度相同

    这是我的情况 HTML div div div class empty nbsp div div class empty nbsp div div class empty nbsp div div div div class empty n
  • 如何在 T-SQL 中将多行作为单行返回?

    几个月前 我们的供应商向我们的票务系统添加了一项功能 使我们可以向票证添加任意数量的自定义字段 我想将这些字段与其他调用信息一起查询以用于报告目的 但每个可扩展字段都作为一行存储在数据库中 所以基本上你有这样的东西 ext doc no c
  • 按需初始化持有者习语 - 何时加载类?

    我一直在看 https en wikipedia org wiki Initialization on demand holder idiom了解更多有关单例的信息 我的问题是静态内部类到底什么时候加载以及什么时候初始化 我的理解是 可以加
  • 使用斯坦福 CoreNLP 进行共指解析

    我是斯坦福 CoreNLP 工具包的新手 并尝试将其用于解决新闻文本中的共指问题的项目 为了使用斯坦福 CoreNLP 共指系统 我们通常会创建一个管道 这需要标记化 句子分割 词性标记 词形还原 命名实体识别和解析 例如 Properti
  • 我不明白 EF5 dbContext.Entry(entity).Reload() 方法应该如何工作?

    在这个例子中 using System using System Collections Generic using dbModel using System Linq using System Data Entity Infrastruc
  • 带有 MAMP Pro 的自动虚拟主机?

    使用 MAMP Pro 您可以创建诸如 local example com 之类的条目 并指向本地计算机上该站点的根目录 是否可以将其自动化 在我的电脑上 我的设置如下 用户 hm Sites example com app 用户 hm S
  • Brainfuck 尝试 - 在 0 细胞中

    如果我尝试在包含 0 的单元格中输入 在 Brainfuck 中会发生什么 gt 另外 如果我尝试在指向 0 单元格时启动循环 会发生什么情况 gt 编辑 我忘了提 但我正在努力做一名翻译 这是我用作示例的一段代码 gt lt gt lt
  • 在我的页面中有效加载 CSS

    这是我的问题 我正在使用 Google Page Speed Insights 分析我的页面 它告诉我删除头部 浮动线上方 的 css 链接 因为它阻止了我的页面加载 现在我的文档头部有一个简单的链接 我尝试将链接行放在文档的底部 就在页面
  • 使用 range-v3 读取逗号分隔的数字列表

    我想使用范围 我使用 range v3 实现 来读取输入流 该输入流是逗号分隔的数字列表 如果没有范围 这是微不足道的 但是 这就是我认为解决这个问题的直接方法 auto input std istringstream 42 314 11