【问题标题】:Extract substrings between two delimiter characters from a string in c++从c ++中的字符串中提取两个定界符之间的子字符串
【发布时间】:2014-09-18 05:15:21
【问题描述】:

如果子字符串在起始分隔符和结束分隔符之间,我必须从字符串中提取子字符串。

例如,我的字符串是:

12345\Disk&Ven_SRT&Prod_USB_3.0_JET_16G&Rev_1100&049113082705515646000190&0]

开始分隔符是'_',结束分隔符是'&'。我需要'_'和'&'之间的所有子字符串。即,我的输出应该是:

SRT    USB_3.0_JET_16G    1100

我尝试使用 boost::tokenizer,但它也标记了字符串“USB_3.0_JET_16G”,因为它包含“_”。所以我的目标是 '_' 和 '&' 之间的任何内容都应该是子字符串的一部分,如果存在多个开始和结束分隔符,则应该检索所有这些子字符串。

如何做到这一点?我正在使用 VS 2010。

谢谢

【问题讨论】:

  • 有很多可能的解决方案,到目前为止您尝试过什么?它是如何工作的?怎么没用?
  • @JoachimPileborg :我通过指定 boost::char_separator<char> sep("_&]"); 使用了 boost::tokenizer。但它拆分了我需要的第二个子字符串,具体取决于“_”的出现。
  • 可以使用简单的循环读取子字符串。但我更喜欢库函数来做到这一点。
  • 在这种情况下,您可能别无选择,考虑到子字符串之一包含分隔符之一?

标签: c++ string visual-studio-2010


【解决方案1】:

一种可能的解决方案是分两遍进行:首先对'&' 字符进行标记,这很容易,因为您想要的子字符串都不包含该字符。

然后在第二遍中,您只需从第一遍中获得的子字符串中丢弃直到(包括)第一个 '_' 字符的任何文本。

【讨论】:

    猜你喜欢
    • 2013-12-11
    • 2013-01-31
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多