2

有没有我可以在 C++ 中放入一个字符的 ascii 值,它什么都不代表?我试过 0 但它最终搞砸了我的文件,所以我无法阅读它。

4

6 回答 6

6

ASCII 0 为空。除此之外,传统 ASCII 中没有“无”字符。如果合适,您可以使用控制字符,如 SOH(标题开头)、STX(文本开头)或 ETX(文本结尾)。它们的 ASCII 值分别为 1、2 和 3。

有关我用于此说明的 ASCII 代码的完整列表,请参阅此站点

于 2008-11-10T22:45:40.510 回答
3

当然。使用不会出现在常规数据中的任何字符值。这通常称为分隔文本文件。常用的分隔符选择包括空格、制表符、逗号、分号、竖线字符和波浪号。

于 2008-11-10T22:43:25.507 回答
3

在 C++ 源文件中,'\0' 表示 0 字节。但是,C++ 字符串通常以 null 结尾,这意味着 '\0' 表示字符串的结尾——这可能是你的文件混乱的原因。

如果你真的想在数据文件中存储一个 0 字节,你需要使用一些其他的编码。一个简单的字符会使用一些其他字符 - 例如,0xFF - 它不会出现在您的数据中,或者一些长度/数据格式或类似的东西。

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

于 2008-11-10T22:47:20.727 回答
1

空字符 '\0' 仍然占用一个字节。

您的软件是否将空字符识别为文件结尾字符?

如果您的软件正在读取此文件,您可以定义一个占位符字符(与数据不同的字符),但您还需要处理该字符。如,说'*'是你的占位符。您将读取字符,但不会将其添加到存储数据的结构中。它仍然会占用文件中的空间,但不会占用数据结构中的空间。

我是在回答你的问题还是错过了它?

于 2008-11-10T22:41:50.863 回答
1

你的意思是你可以写一个实际上不会改变文件的值吗?答案是否定的。

也许发布更多关于你想要完成的事情。

于 2008-11-10T22:41:53.827 回答
0

这取决于它是什么类型的文件以及谁在解析它。

于 2008-11-10T22:42:06.820 回答