C++ 如何在C++;

C++ 如何在C++;,c++,C++,我有一个包含xml代码的字符串。我想逐行阅读,以便提取“title”标记之间的字符串。 我知道如何提取标题,但如何遍历字符串? 听起来很简单,但我现在没有主意。 高级版谢谢。也许您可以提供更多关于提取“title”标记之间的字符串的详细信息 如果您已经可以提取标题标记,那么这意味着您知道它们的位置,那么提取字符串只是在开始和结束标题标记之间取子字符串的问题,对吗 您正在寻找XML解析器吗?开放源码运行良好,并且具有多种语言的绑定。还有其他解析器,解析器允许您使用XML字符串并创建一个树数据结构,

我有一个包含xml代码的字符串。我想逐行阅读,以便提取“title”标记之间的字符串。
我知道如何提取标题,但如何遍历字符串?
听起来很简单,但我现在没有主意。

高级版谢谢。

也许您可以提供更多关于提取“title”标记之间的字符串的详细信息

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

您正在寻找XML解析器吗?开放源码运行良好,并且具有多种语言的绑定。还有其他解析器,解析器允许您使用XML字符串并创建一个树数据结构,该结构使您能够轻松访问XML元素

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

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

下面是一些伪代码:

// 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           
//节点:树中的当前节点
//当前位置:正在解析的XML字符串中的当前位置
//字符串:正在解析的XML字符串。
解析(节点、当前位置、字符串):
当前位置
为什么不简单地使用XML解析器呢?我不能,我需要自己解析代码:)手动解析XML充其量只是一个粗略的想法。您真的应该使用解析器。为什么你不能呢?这是一个任务,我的问题是我不知道如何迭代一个字符串,这样我就可以打印所有的标题,而不仅仅是第一个,就像我现在所做的那样。我不需要解析器,我可以提取标题之间的文本,但只能从字符串中提取第一个,而不是其余的,因为我没有一个想法如何逐行在字符串中迭代…@vBx:要提取行,可以使用boost::tokenize,或
string::find
substr
。@Tony:提取部分已经完成,但我只提取第一个标题,因为我没有时间()来迭代字符串,这是我的问题,如何迭代?:@vBx:最简单的方法:
#包括std::istringstream iss(我的多行字符串);std::字符串行;while(getline(iss,my_multiline_string)){/*在这里用line做东西*/}
@vBX:不知道你没有“while”是什么意思。您可以使用添加while循环到您拥有的任何标记化函数,对吗?