簡體   English   中英

在C ++中從具有多個NULL'\\ 0'的函數返回字符串

[英]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; 壓縮器功能的所有其他字符均不在此處。 有沒有辦法顯示所有字符串。

您遇到的根本問題是壓縮算法對二進制數據而不是文本進行操作。 如果壓縮某些內容,則預期某些壓縮字節為零。 因此,壓縮后的數據不能存儲在以空值結尾的字符串中。

您需要改變思維方式以使用二進制數據。

要壓縮,請執行以下操作:

  1. 使用一些定義明確的編碼將文本轉換為二進制。 例如,UTF-8。 這將產生一個unsigned char數組。
  2. 壓縮unsigned char ,這將再次產生unsigned char數組,但現在已壓縮。

要解壓縮,只需反轉這些步驟。

由於您正在編寫C ++代碼,因此建議您使用標准容器。 std::stringstd::wstringstd::vector<T>

完全相同的原則適用於所有語言。 當您使用C#編寫代碼時,需要將文本轉換為二進制。 使用Encoding.GetBytes()來做到這一點。 產生一個字節數組byte[] 將其壓縮為另一個字節數組。 等等。

但是您確實必須首先克服這種嘗試以文本數據類型存儲二進制數據的願望。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM