我可以将一个ascii值放入C ++中的char中,它代表什么都没有?我试过0但最终搞砸了我的档案,所以我看不懂。
答案 0 :(得分:6)
ASCII 0为空。除此之外,传统的ASCII中没有“无”字符。如果合适,您可以使用控制字符,如SOH(标题的开头),STX(文本的开头)或ETX(文本的结尾)。它们的ASCII值分别为1,2和3。
有关我用于此解释的ASCII代码的完整列表,请参阅this site
答案 1 :(得分:3)
不确定。使用不会出现在常规数据中的任何字符值。这通常称为分隔文本文件。分隔符的热门选择包括空格,制表符,逗号,分号,竖线字符和代字号。
答案 2 :(得分:3)
在C ++源文件中,'\ 0'表示0字节。但是,C ++字符串通常以空值终止,这意味着'\ 0'表示字符串的结尾 - 这可能会弄乱你的文件。
如果您确实想在数据文件中存储0字节,则需要使用其他一些编码。一个简单的例子会使用一些其他字符 - 例如0xFF - 它们不会出现在您的数据中,或者某种长度/数据格式或类似的东西。
无论您选择使用哪种编码,编写文件的应用程序和读取文件的应用程序都必须就编码的内容达成一致。这是一场全新的噩梦。
答案 3 :(得分:1)
空字符'\ 0'仍占用一个字节。
您的软件是否将空字符识别为文件结束字符?
如果您的软件正在读取此文件,您可以定义一个占位符字符(一个与数据不同的字符),但您还需要处理该字符。如同说,'*'是你的占位符。您将读入该字符,但不将其添加到存储数据的结构中。它仍会占用文件中的空间,但不会占用数据结构中的空间。
我是在回答您的问题还是错过了?
答案 4 :(得分:1)
你的意思是你能写的一个值,它实际上不会改变文件吗?答案是否。
也许发布一些关于你想要完成的事情。
答案 5 :(得分:0)
这将取决于它是什么类型的文件以及谁正在解析它。