91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JsonCpp第五課 讀取帶BOM的UTF-8編碼文本

發布時間:2020-07-03 04:58:04 來源:網絡 閱讀:484 作者:fengyuzaitu 欄目:編程語言

知識解讀
?????????????在Windows通過記事本打開的UTF-8編碼文件,默認會在保存的時候,往文件開頭多添加三個字節EF BB BF,表明文本的編碼方式是UTF-8,這種技術就叫做BOM(Byte Order Mark,就是字節序標記)。在Unix或者Linux操作系統中不會出現這種情況。如果該文本是ANSI格式編碼的,也沒有添加其他的字符。


文本內容讀取差異
帶有BOM的文本字節流
"锘縖\r\n{\r\n\t\"version\": \"1.0.0\",\r\n\t\"messagetype\": \"alarm\",\r\n\t\"cmdtype\": 10009,\r\n\t\"sn\":\"202039248932482934\"

不帶BOM的文本字節流
"[\r\n{\r\n\t\"version\": \"1.0.0\",\r\n\t\"messagetype\": \"alarm\",\r\n\t\"cmdtype\": 10009,\r\n\t\"sn\": \"202039248932482934\"


問題
?默認情況下傳遞帶有BOM的文本字節流給JsonCpp解析,肯定是解析不出來的,因為多了EF BB BF三個字節,所以需要將這三個字節從文本中剔除


代碼
?std::ifstream ifs;
?ifs.open(pFileName, std::ifstream::in | std::ifstream::binary);

?std::string str((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>());
?std::string strValidJson;
?if ((0xef == (unsigned char)str[0]) && (0xbb == (unsigned char)str[1]) && (0xbf == (unsigned char)str[2]))
?{
??strValidJson = str.substr(3, str.length() - 3);
?}
?else
?{
??strValidJson = str;
?}
?//開始解析Json文本
?Json::Reader reader;
?Json::Value root;
?if (NULL == reader.parse(strJson, root))?

{

ifstream.close();

return;

}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乳源| 黔西| 宜州市| 福贡县| 民县| 遂川县| 桐柏县| 罗源县| 买车| 曲靖市| 罗田县| 泗水县| 抚顺县| 舟曲县| 五大连池市| 余庆县| 朝阳区| 辰溪县| 乌苏市| 额济纳旗| 紫金县| 太白县| 浑源县| 社旗县| 民县| 荥阳市| 海伦市| 辉南县| 永兴县| 大足县| 卫辉市| 杨浦区| 图木舒克市| 大厂| 嘉鱼县| 辽中县| 平乡县| 安多县| 项城市| 丰宁| 慈利县|