[英]Returning string from function having multiple NULL '\0' in C++
我正在壓縮字符串。 並且壓縮的字符串有時在結束NULL之前的內部具有NULL字符。 我想將字符串返回到null結尾,但是壓縮器函數將返回字符串直到出現第一個NULL。 我之前曾向c提出過一個問題。 但是連續地,我現在還需要C ++和下一個C#中的解決方案。 請幫助我。謝謝。
char* compressor(char* str)
{
char *compressed_string;
//After some calculation
compressed_string="bk`NULL`dk";// at the last here is automatic an NULL we all know
return compressed_string;
}
void main()
{
char* str;
str=compressor("Muhammad Ashikuzzaman");
printf("Compressed Value = %s",str);
}
輸出為:壓縮值= bk; 壓縮器功能的所有其他字符均不在此處。 有沒有辦法顯示所有字符串。
您遇到的根本問題是壓縮算法對二進制數據而不是文本進行操作。 如果壓縮某些內容,則預期某些壓縮字節為零。 因此,壓縮后的數據不能存儲在以空值結尾的字符串中。
您需要改變思維方式以使用二進制數據。
要壓縮,請執行以下操作:
unsigned char
數組。 unsigned char
,這將再次產生unsigned char
數組,但現在已壓縮。 要解壓縮,只需反轉這些步驟。
由於您正在編寫C ++代碼,因此建議您使用標准容器。 如std::string
或std::wstring
和std::vector<T>
。
完全相同的原則適用於所有語言。 當您使用C#編寫代碼時,需要將文本轉換為二進制。 使用Encoding.GetBytes()
來做到這一點。 產生一個字節數組byte[]
。 將其壓縮為另一個字節數組。 等等。
但是您確實必須首先克服這種嘗試以文本數據類型存儲二進制數據的願望。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.