日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

rapidxml 给节点赋值时出现乱码问题

發布時間:2024/8/1 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rapidxml 给节点赋值时出现乱码问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目場景:

要實現一個通過map容器創建一個節點數組,把map中的數據組裝成xml格式發送到服務端

問題描述

`當使用rapidxml給節點賦值后,打印輸出 出現亂碼。并且打印輸出時printf無法打印全部數據。
代碼如下:

rapidxml::xml_node<>* paddresslist = doc.allocate_node(rapidxml::node_element,"AddressList",NULL);root->append_node(paddresslist);for (auto it = base_msg.add_infolist.begin(); it != base_msg.add_infolist.end(); it++){rapidxml::xml_node<>* pdresinfo = doc.allocate_node(rapidxml::node_element,"AddressInfo",NULL);paddresslist->append_node(pdresinfo);AddressInfo pdressinfo = it->second;pdresinfo->append_node(doc.allocate_node(rapidxml::node_element,"IP",pdressinfo.m_ip.c_str()));pdresinfo->append_node(doc.allocate_node(rapidxml::node_element,"SubMask",pdressinfo.m_submask.c_str()));pdresinfo->append_node(doc.allocate_node(rapidxml::node_element,"GateWay",pdressinfo.m_gateway.c_str()));pdresinfo->append_node(doc.allocate_node(rapidxml::node_element,"MAC",pdressinfo.m_mac.c_str())); } .... printf("%s\n",text);

原因分析:

是因為要賦值的生命周期問題導致
具體描述:http://t.zoukankan.com/kex1n-p-3285900.html


解決方案:

使用allocate_node()對臨時變量進行處理
代碼如下:

pdresinfo->append_node(doc.allocate_node(rapidxml::node_element,"IP",doc.allocate_string(pdressinfo.m_ip.c_str())));

打印不全問題

std::cout << text << std::endl;

總結

以上是生活随笔為你收集整理的rapidxml 给节点赋值时出现乱码问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。