gpt4 book ai didi

c++ - 如何在C++中逐行读取字符串

转载 作者:行者123 更新时间:2023-11-28 08:22:41 27 4
gpt4 key购买 nike

我有一个带有 xml 代码的字符串。我想逐行读取它,以便提取“标题”标签之间的字符串。
我知道如何提取标题,但如何遍历字符串?
听起来很简单,但我现在不知道。
提前致谢。

最佳答案

也许您可以提供更多有关提取“title”标签之间的字符串的含义的详细信息?

如果您已经可以提取标题标签,那么这意味着您知道它们的位置,那么提取字符串只是取开始和结束标题标签之间的子字符串,对吗?

您在寻找 XML 解析器吗?开源 libxml运行良好,并具有多种语言的绑定(bind)。还有其他解析器,解析器允许您做的是获取 XML 字符串并创建一个树数据结构,使您可以轻松访问 XML 的元素。

编辑:最初问题中不存在关于不使用 xml 解析器的要求。下面是创建您自己的 XML 解析器的粗略算法。

1) 创建树数据结构和递归 parse() 函数。2) 搜索 XML 标记,任何具有 <...> 模式的标记。将“...”标记添加到您所在的当前节点的其中一个子节点,然后再次调用递归的parse() 函数。3) 如果您找到一个关闭原始 <...> 的 XML 标记,那么您就完成了对该 block 的解析。返回步骤#2。如果没有其他 block ,则从解析函数返回。

这是一些伪代码:

// node: The current node in the tree
// current_position: the current position in the XML string that you are parsing
// string: the XML string that you are parsing.
parse(node, current_position, string):
while current_position < len(string):
current_position = find(string[current_position:len(string)], "<...>")
if !found: return current_position // should be end of string if nothing is found.
node.children[node.num_children] = new Node("<...>");
current_position = parse(node.children[node.num_children],current_position+size_of_tag,string)
current_position = find(string[current_position:len(string)], "</...>")
node.num_children++
return current_position

关于c++ - 如何在C++中逐行读取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5214770/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com