2008-11-10 56 views
2

是否存在ascii值,我可以將它放入C++中的char中,它什麼都不代表?我試過0,但它最終搞砸了我的文件,所以我看不懂它。ASCII值爲Nothing

回答

1

空字符'\ 0'仍佔用一個字節。

您的軟件是否將空字符識別爲文件結束符?

如果您的軟件正在讀取此文件,您可以定義一個佔位符(與數據不同),但您還需要處理該字符。如在中,說'*'是你的持有人。您將閱讀該字符,但不會將其添加到存儲數據的結構中。它仍然佔用文件中的空間,但它不會佔用數據結構中的空間。

我回答你的問題還是錯過了?

1

你的意思是你可以編寫一個不會真正改變文件的值嗎?答案是no

也許發佈一些關於你想要完成的事情。

0

這取決於它是什麼類型的文件以及誰在解析它。

3

當然。使用任何不會出現在常規數據中的字符值。這通常被稱爲分隔文本文件。分隔符的常用選項包括空格,製表符,逗號,分號,豎線字符和代字符。

6

ASCII 0爲空。除此之外,傳統ASCII中沒有「無」字符。如果適用,您可以使用SOH(標題開始),STX(文本開始)或ETX(文本結束)等控制字符。它們的ASCII值分別是1,2和3。

有關,我用於此的解釋ASCII碼的完整列表,見this site

3

在C++源文件,「\ 0」表示一個0字節。但是,C++字符串通常是以空字符結尾的,這意味着'\ 0'代表字符串的結尾 - 這可能是搞亂文件的原因。

如果你真的想在數據文件中存儲0字節,你需要使用其他編碼。一個簡單的人會使用一些其他的字符 - 例如0xFF--它不會出現在你的數據中,或者一些長度/數據格式或類似的東西。

無論您選擇使用哪種編碼,編寫文件的應用程序和閱讀它的應用程序都需要就編碼的內容達成一致。這是一個全新的噩夢。