回覆列表
  • 1 # hofol24451

    "a","b","\n","\\","0","1","2","\\"如果是C語言或者C++的話,就是字串長度為8。儘管形式字串可以有任意(但有限)的長度,實際語言的字串的長度經常被限制到一個人工極大值。一般的說,有兩種型別的字串資料型別: “定長字串”,它有固定的極大長度並且不管是否達到了這個極大值都使用同樣數量的記憶體;和“變長字串”,它的長度不是專斷固定的並且依賴於實際的大小使用可變數量的記憶體。在現代程式語言中的多數字符串是變長字串。儘管叫這個名字,所有變長字串還是在長度上有個極限,一般的說這個極限只依賴於可獲得的記憶體的數量。擴充套件資料:字元編碼歷史上,字串資料型別為每個字元分配一個位元組,儘管精確的字符集隨著區域而改變,字元編碼足夠類似得程式設計師可以忽略它 — 同一個系統在不同的區域中使用的字符集組要麼讓一個字元在同樣位置,要麼根本就沒有它。這些字符集典型的基於ASCII碼或EBCDIC碼。意音文字的語言比如漢語、日語和北韓語(合稱為CJK)的合理表示需要多於256個字元(每字元一個位元組編碼的極限)。常規的解決涉及保持對ASCII碼的單位元組表示並使用雙位元組來表示CJK字形。現存程式碼在用到它們會導致一些字串匹配和切斷上的問題,嚴重程度依賴於字元編碼是如何設計的。某些編碼比如EUC家族保證在ASCII碼範圍內的位元組值只表示ASCII字元,使得使用這些字元作為欄位分隔符的系統得到編碼安全。其他編碼如ISO-2022和Shift-JIS不做這種擔保,使得基於位元組的程式碼做的匹配不安全。另一個問題是如果一個字串的開頭被刪除了,對解碼器的重要指示或關於在多位元組序列中的位置的資訊可能就丟失了。另一個問題是如果字串被連線到一起(特別是在被不知道這個編碼的程式碼截斷了它們的結尾之後),第一個字串可能不能導致編碼器進入適合處理第二個字串的狀態中。

  • 中秋節和大豐收的關聯?
  • 8204列車明天幾點到神木?