在這個例子中缺失,數據去變換爲const char *時的std :: string
*剛給予爲const char *值作爲輸入(即::試驗之一)
*轉換爲const char *到的std :: string
*通過的std :: string的值來壓縮串
*字符串,壓縮,可以看到壓縮字符串的值
*如::壓縮字符串:: X + I-.QKo#
*現在轉換的std :: string的壓縮數據爲const char * ...
*當我'在這一步中,只有75%的data.few數據丟失了。
例如:: X + I-.QK
*應我需要做的序,以獲得完整的數據是什麼?
*有人可以在這方面幫助我嗎?
int main (int argc,char *argv[])
{
const char *str = "test one";
int length = 0;
std::string compressionString(str);//converting char * to std::string
cout << "compressionString::" << compressionString<< endl;
while(*(str+length))
length++; //length of char *
cout << "Length of entered string:: " <<length << endl;
std::string compStr = compress_string(compressionString);//Compress the string using compress_string()
cout << "compressed String::"<<compStr << endl;
const char* m_pcompCharptr = compStr.c_str();
cout << "Compressed string char* length::"<< sizeof(m_pcompCharptr) <<endl;
cout << "Compressed value which is present in char * is :: " <<m_pcompCharptr << endl;
cout << "Compressed String length:: " << compStr.length() << endl;
int iCompLen = compStr.length();
cout << "iCompLen::" << iCompLen << endl;
std::string decompressionString(m_pcompCharptr);//converting const char* to std::string
std::string decompStr = decompress_string(decompressionString);
cout << "decompStr::" << decompStr << endl;
return 0;
}
輸出::
輸入的字符串:: 8
壓縮字符串:: X + I-.QKo#
的compressionString ::測試一個長度
壓縮字符串char * levgth :: 8
壓縮值存在於ch AR *是:: X + I-.QK
壓縮字符串長度:: 16
iCompLen :: 16
終止稱爲投擲的實例後 '的std :: runtime_error' 什麼():zlib的解壓縮過程中的異常:(-5) 中止(核心轉儲)
我不會把一個字符串中的壓縮字符串。特別是因爲它可能不再被視爲一個字符串。 – 2015-02-23 10:21:15
我猜測在壓縮字符串中有一個空字節。如果在倒數第四行中使用'std :: string decompressionString(m_pcompCharptr,compStr.size());'它會起作用嗎? – Wintermute 2015-02-23 10:21:22
這個問題對我來說非常難以理解。請使用完整句子並改進格式以清楚地標記代碼片段等。 – 2015-02-23 10:21:47