【发布时间】: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