我有一个文件中的字符串。例如,来自XML文件.. 我只想知道从以下标签格式化内容的最简单方法是什么?
<member names="John:Frank" family="Smith:Wesson"/>
我只想要John
Frank
Smith
Wesson
,每一个都是不同的字符串。
答案 0 :(得分:2)
使用XML解析器解析xml,然后在':'上拆分值?使用解析器RapidXML
答案 1 :(得分:1)
如果您喜欢在Boost Spirit中快速&n;脏语法:
#include <boost/spirit/include/qi.hpp>
namespace qi = boost::spirit::qi;
int main()
{
std::string const example = "<member names=\"John:Frank\" family=\"Smith:Wesson\"/>";
std::vector<std::string> data;
if (qi::parse(begin(example), end(example).
*(
qi::omit [ *~qi::char_('"') ] >> '"' >> qi::as_string [ *~qi::char_("\":") ] % ':' >> '"'
),
data))
{
for (auto const& item : data)
std::cout << item << "\n";
}
}
输出
clang++ -std=c++11 main.cpp && ./a.out
John
Frank
Smith
Wesson
答案 2 :(得分:0)
我会将substr与finders结合使用
"
位置。"
:
以与您刚才相同的方式拆分结果字符串。"
时执行此操作
答案 3 :(得分:0)
你的问题是关于字符串操作,而不是XML解析。
要从<member names="John:Frank" family="Smith:Wesson"/>
获取四个名称非常简单,您只需要:
将<member names="John:Frank" family="Smith:Wesson"/>
视为string
。
根据"
查找两个大的子字符串,您将获得John:Frank
和Smith:Wesson
。
对于每个子字符串,根据:
进一步拆分它们,您将获得John
,Frank
,Smith
和Wesson
。完成!