2008-11-10 57 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--它不会出现在你的数据中,或者一些长度/数据格式或类似的东西。

无论您选择使用哪种编码,编写文件的应用程序和阅读它的应用程序都需要就编码的内容达成一致。这是一个全新的噩梦。