gpt4 book ai didi

用于缩进 XML 行的 C++ 代码

转载 作者:搜寻专家 更新时间:2023-10-31 01:21:13 26 4
gpt4 key购买 nike

我正在寻找用于缩进 xml 行的 C++ 代码。我不想链接到图书馆。

我的流像这样排成一行

<root><a>value_a</a><b>value_b</b></root>

并且我想以多行方式(使用制表符)打印它。

<root>
<a>value_a</a>
<b>value_b</b>
</root>

它是否给任何人敲响了警钟?

最佳答案

如果您不想使用库,则必须自己编写。这不应该太难。您首先必须 tokenize流变成标签和值。我猜这是最难的部分。然后你必须将 token 写入流。对于开始标记后面的每个开始标记,您增加缩进,对于结束标记后面的每个结束标记,您减少缩进。

标记化的一些提示。我想我会尝试编写一个简单的 XMLToken 类,如下所示:

class XMLToken {
public:
enum ElementType { OpenTag, CloseTag, Value };
std::string content;
ElementType elementType;
};

这些成员应该用适当的getters和setters封装,这只是为了说明。然后我会重载这种类型的流提取运算符:

std::istream & operator >>(st::istream & stream, XMLToken & token) {
// if first char is '<', then token is a tag, otherwise a value
// read until '>' is found for a tag and until '<' is found for a value
return stream;
}

然后您可以使用 istream_iterator 对流进行标记:

typedef std::istream_iterator< XMLToken > XMLTokenizer;
for ( XMLTokenizer it = XMLTokenizer(some_istream); it != XMLTokenizer; it++ ) {
// process token
}

希望对您有所帮助。

关于用于缩进 XML 行的 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4021457/

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