gpt4 book ai didi

c++ - 解析 xml 时无法获取属性的名称和值

转载 作者:行者123 更新时间:2023-11-28 04:19:45 25 4
gpt4 key购买 nike

我有一个非空的 pugi::xml_node my_node;

如果我用 my_node.print(std::cout); 打印它,我可以清楚地看到这个节点的内容没问题。假设它是:

<my_class id="0" name="my class" type="my type">
<child_1> 45.0 </child_1>
<child_2> 0.01 </child_2>
<child_3> 100.0 </child_3>
<child_4> some_string </child_4>
</my_class>

但是当我尝试迭代它的属性时,我得到了奇怪的输出(看起来像某种地址?)。

for (auto attr : my_node.attributes()){
std::cout << attr.name() << " : " << attr.value() << std::endl;
}

这是输出:

0x55727e049cd4 : 0x55727e049ce4
0x55727e049d1c : 0x55727e049d34
0x55727e049d8c : 0x55727e049da4

顺便说一句,我从文档中拿了这个例子,但我不知道为什么会这样。

我在这里做错了什么?

最佳答案

name()value() 方法返回 const char_t*

char_t 是 Pugi 特定的类型定义,由 PUGIXML_WCHAR_MODE 宏控制。

我认为发生了什么,你已经定义了 PUGIXML_WCHAR_MODEchar_t 变成了 wchar_t,但是 std::cout不是 Unicode。如果是这种情况,请尝试使用 Unicode 输出,如下所示:

std::wcout << attr.name() << L" : " << attr.value() << std::endl;

关于c++ - 解析 xml 时无法获取属性的名称和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55730878/

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