使用ofstream将多个变量类型写入文本文件

时间:2011-02-28 20:41:45

标签: c++ file stream floating-point byte

我只想写一个简单的文本文件:

ofstream test;
test.clear();
test.open("test.txt",ios::out);
float var = 132.26;
BYTE var2[2];
var2[0] = 45; 
var2[1] = 55;
test << var << (BYTE)var2[0] << (BYTE)var2[1];
test.close();

但是在输出文件中我得到了:

132.26-7

我不知道问题是什么......

2 个答案:

答案 0 :(得分:1)

我认为问题可能是BYTE类型可能是char的typedef。如果是这种情况,那么当您尝试将BYTE写入流时,它将打印与该字节对应的ASCII字符而不是字节的数值。请注意,字符 - 和7对应于ASCII值45和55,例如。

要解决此问题,您需要做两件事:

  1. 在将这些字符写入文件之前,你要写入一些整数类型(如int或short)。这会强制流写入数字值而不是字符。
  2. 在您输出的所有数据之间输出一些空白。现在,因为没有空格,所以所有人都会一起出血,这使得事情变得更难阅读。
  3. 希望这有帮助!

答案 1 :(得分:0)

BYTE只是unsigned char的别名。默认情况下,在流中输出char时,会将其转换为ASCII字符。在ASCII表中,字符45是' - ',字符55是'7'。

请改为尝试:

test << var << (int)var2[0] << (int)var2[1];