^@ 和 ^A 作为 c++ 中的输出

^@ and ^A as output in c++

本文关键字:输出 c++ 作为      更新时间:2023-10-16

我正在尝试将代码的输出保存在文本文件中。因此,我声明并打开了文件,如下所示。

ofstream of;
of.open("outputPeakFinder.txt");

进行分析后,我尝试将输出保存在文件中,如下所示:

for (i = 0; i < NXtl * NSamples; i++){
printf("%d, Output: %d n", i, output[i]);
of << output[i] << 'n';
}

它在终端上打印正确的输出,应该是

0 0 0 0 0 0 0 1 0 0 

但是在文本文件中我看到

^@ ^@ ^@ ^@ ^@ ^@ ^@ ^A ^@ ^@ 

这看起来很愚蠢,但我在哪里做错了。

您需要了解char的数值与其表示的字符之间的区别。例如,字母'A'的数值为 65,数字'0'的数值为 48(请参阅 ASCII(。

ASCIINUL字符的数值为零,作为int将打印为0但不对应于任何字母、数字或标点符号。某些文本编辑器将显示特殊序列^@等字符,以将它们与有效字符(如'0''@'(区分开来。

问题(正如我从阅读您的评论中猜测的那样(是任何基于char的类型(我猜uint8是 的类型别名(实际上被格式化的输出(和输入(运算符视为字符

如果要将其输出为整数,则需要使用其他整数类型,或转换为另一种整数类型(例如static_cast<unsigned>(output[i])(。