将多个单词提取到一个字符串变量

2023-12-12

std::stringstream convertor("Tom Scott 25");
std::string name;   
int age;

convertor >> name >> age;

if(convertor.fail())
{
    // it fails of course
}

我想将两个或多个单词提取到一个字符串变量中。到目前为止我读过,似乎这是不可能的。如果是的话,还有什么办法呢?我想要name获取数字(年龄)之前的所有字符。

我觉得使用 sscanf 最舒服,但我显然不能。

我需要的是能够提取之前的所有单词age例如。


到目前为止发布的大多数解决方案并没有真正满足规范——所有迄今为止的数据都被视为名称。例如,他们会因为“Richard Van De Rothstyne”这样的名字而失败。

正如OP指出的,使用 scanf 你可以做类似的事情:scanf("%[^0-9] %d", name, &age);,它会很好地读取这个。假设这是面向行的输入,无论如何我都会这样做:

std::string temp;
std::getline(infile, temp);

// technically "[^0-9]" isn't required to work right...
sscanf(temp.c_str(), "%[^0123456789] %d", name, &age);

不幸的是,iostreams 不提供对扫描集转换的直接模拟—— getline 可以读取到一个分隔符,但你只能指定一个字符作为分隔符。如果你真的不能使用 scanf 和 company,下一站将是手动编码(时代的开始将是temp.find_first_of("0123456789");)或使用 RE 包(TR1,如果你的编译器提供它,否则可能Boost).

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

将多个单词提取到一个字符串变量 的相关文章

随机推荐

  • Docker - 名称已被容器使用

    运行docker使用以下命令的注册表总是会抛出错误 dev tmp me docker run d name registry v1 e SETTINGS FLAVOR local e STORAGE PATH registry e SEA
  • PowerShell Tee-Object 未捕获文件中的调试行

    我有一个通过自动化运行的 PowerShell 脚本 因此我需要将脚本的输出捕获到文件中 但我还想捕获运行的命令 为输出提供一些上下文 我会使用set x在 Linux shell 脚本中 不过 我不知道如何将这些命令捕获到 Windows
  • Typescript 实例化通用对象

    我遇到了这个问题 搜索了几个小时却找不到合适的解决方案 我正在尝试创建一个通用函数来恢复类型和对象并将对象转换为该特定类型 但我在实例化泛型类型时遇到了麻烦 我想知道 c Activator CreateInstance 中是否有类似的东西
  • 从 spring mvc 设置选择框值

    如何从控制器在 jsp 中设置选择框值 Employee employee new Employee 我为实体创建了新对象Employee然后设置值 用这个代码指定 employee setEmpDesignation addEmploye
  • 使用 Windows PowerShell 设置 .SSH 密钥时出错

    我已经让 GIT BASH shell 与 SSH 密钥一起正常工作 所以我知道我的基本配置步骤是正确的 但我更喜欢 Windows powershell 实际上我更喜欢 Mac 或 Linux 终端 但没有可用的选项 Anyways 我的
  • 看不懂背包解决方案

    在维基百科中 Knapsack 的算法如下 for i from 1 to n do for j from 0 to W do if j gt w i then T i j max T i 1 j T i 1 j w i v i 18 el
  • 需要一组基于 DefinePlugin 常量的模块

    我正在尝试使用 Webpack 构建一个 Web 应用程序 但我在设计的特定部分遇到了一些困难 希望这里有人有做类似事情的经验 或者足够了解告诉我我是这样做完全错误 基本上 我们有一个 Angular 仪表板应用程序 它由一个 shell
  • Swift 三元语法错误

    我以前一直用 Objective C 编程 现在对 Swift 还很陌生 Xcode 给我的这个错误真的让我很困惑 func renderBufferAreaBAUp yOffset CGFloat amount CGFloat ifLef
  • 为什么 x86-64 GCC 函数序言分配的堆栈少于局部变量?

    考虑以下简单的程序 int main int argc char argv char buffer 256 buffer 0 0x41 buffer 128 0x41 buffer 255 0x41 return 0 在 x86 64 机器
  • 如何使用预引导数据来获取 BCa CI?

    我使用一个函数引导了两个变量 其中一个已经在 Impala csv 文件中 该函数重新采样并报告样本大小的平均值nrow data 5000 次重复 代码如下 data lt read csv Impala csv allo lt data
  • 如何在 UINavigationController 中添加多行标题栏

    我尝试在 UINavigationController 中添加两行标题栏 我想根据字符串长度自动调整字体大小 我的字符串最大大小为 60 我尝试通过以下代码实现 UILabel bigLabel UILabel alloc init big
  • 当实体与外键交叉引用时进行 Code First 迁移

    我有相互引用的模型 public class Dept Key public int DeptId get set ForeignKey ManagerId public Emp Manager get set public int Man
  • Azure存储表查询实体真的有数量限制吗?

    From MSDN 查询服务返回的实体数量似乎有限制 针对表服务的查询一次最多可返回 1 000 个实体 并且最多可执行五秒 但是当我编写一个示例来展示这个问题时 我没有发现返回实体数量的任何限制 这是我的关键代码 public class
  • 为什么只有在代码编辑器中重新分配 const 才会在控制台中产生错误? [复制]

    这个问题在这里已经有答案了 我在代码编辑器中编写了以下代码以产生错误 const a 1 console log a const a 1 Uncaught SyntaxError Identifier a has already been
  • LaTeX for Swift 中的代码高亮显示

    我找到了一些带有列表或铸造的解决方案 将源代码放入我的 LaTeX 文档中 但我希望突出显示 Swift 代码 有什么提示吗 Swift 可以开箱即用地使用 minted documentclass article usepackage m
  • Pyserial 我什么时候应该使用flush?

    我正在使用 pyserial 并尝试在 arduino 板上写入和读取数据 我看到几个例子表明在读写时应该使用flush 即使阅读了 pyserial 文档后 我也无法理解flush的作用是什么 我还注意到有 flushInput flus
  • 如何轻松地从表格中添加/删除单元格(移动现有单元格)

    我希望表格自动将单元格对齐为每行两个 这意味着如果添加 删除单元格 单元格将变为每行两个 如果单元格总数为奇数 则最后一行有一个 Example table tr td old1 td td old2 td tr tr td old3 td
  • Angular 2 中的预检响应具有无效的 HTTP 状态代码 403

    我正在使用 Angular 2 和 Ionic 2 应用程序 我不得不更改为另一台服务器进行测试 并且 API 已停止工作并出现以下错误消息 预检响应具有无效的 HTTP 状态代码 403 我将其添加到 htaccess
  • XML XSD 递归和命名空间

    我试图了解 XSD 中的命名空间和递归 但我感到迷失 Error The QName value topic does not resolve to a n element declaration 最重要的部分用白线划分 刚刚学习 xsd
  • 将多个单词提取到一个字符串变量

    std stringstream convertor Tom Scott 25 std string name int age convertor gt gt name gt gt age if convertor fail it fail