以前可能會問這個問題,但是我找不到需要的東西。將無符號字符*緩衝區賦值給一個字符串
我的問題是,我有一個緩衝區加載從web服務下載的數據。緩衝區採用無符號字符*形式,最後沒有'\ 0'。然後我有一個poco xml解析器需要一個字符串。
我試着將它分配給字符串valgrind發現一些丟失的數據。 (見下文)
這裏是代碼:
DOMParser::DOMParser(unsigned char* consatData, int consatDataSize,
unsigned char* lagData, int lagDataSize) {
Poco::XML::DOMParser parser;
std::string consat;
consat.assign((const char*) consatData, consatDataSize);
pDoc = parser.parseString(consat);
ParseConsat();
}
波科XML解析器確實有ParseMemory需要進行數據的一個const char *和尺寸,但由於某種原因,它只是給我段錯誤。
更新:這裏是Valgrind的結果的一部分:
==11880== 12,272 bytes in 1 blocks are possibly lost in loss record 1,126 of 1,143
==11880== at 0x402569A: operator new(unsigned int) (vg_replace_malloc.c:255)
==11880== by 0x4491D05: std::string::_Rep::_S_create(unsigned int, unsigned int, std::allocator<char> const&) (in /usr/lib/libstdc+$
==11880== by 0x4493F6F: std::string::_M_mutate(unsigned int, unsigned int, unsigned int) (in /usr/lib/libstdc++.so.6.0.13)
==11880== by 0x4494109: std::string::_M_replace_safe(unsigned int, unsigned int, char const*, unsigned int) (in /usr/lib/libstdc++.$
==11880== by 0x44941AD: std::string::assign(char const*, unsigned int) (in /usr/lib/libstdc++.so.6.0.13)
==11880== by 0x804DE03: DOMParser::DOMParser(unsigned char*, int, unsigned char*, int) (DOMParser.cpp:27)
我在任何地方都看不到問題。你的問題是什麼? –
的確如此。我可以用不好的方式提出我的問題。我的問題是如何獲得非空字符串結束的數據。 – CppChase
感謝您的問題。請記住,stackoverflow是一個問題和答案網站,而不是問題和解決方案網站。我已在下面回答您的問題。 –