10行的无符号字节与换行符冲突

时间:2014-03-19 00:32:21

标签: c++

有没有办法在下面的演示代码中区分第一个值(保存为unsigned char的数字10)与换行符?

 int main() {

       unsigned char ch1(10), ch2('\n');
       std::cout << (int)ch1 << " " << (int)ch2 << std::endl;
 }

输出

 10 10

我想写一个文件,如无符号字节,但也希望换行符可以与数字&#39; 10&#39;在以后阅读。

有什么建议吗?

的问候, NIKHIL

2 个答案:

答案 0 :(得分:1)

没有办法。您编写相同的字节,并且不保留其他信息。

您需要考虑编码值的其他方法,或为您的标记保留一个值(如255或0)。当然,您需要确保输入中不存在此值。

使用一个字节值作为“特殊”字符来转义控制代码的其他可能性。类似于'\'用于赋予'\ n'中'n'特殊含义。但它使所有解析更复杂,因为您的值现在可能是一个或两个字节长。除非你在内存方面承受着很大的压力,否则我建议将值存储为字符串表示,这通常更具可读性。

答案 1 :(得分:0)

不,值为10的char是换行符。看看ascii table。您将看到数字10将是两个不同的字符(分别为49和48)。