日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/8/1 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 给节点赋值时出现乱码问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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