【问题标题】:Writing multiple variable types to a text file using ofstream使用 ofstream 将多种变量类型写入文本文件
【发布时间】:2011-07-06 01:30:27
【问题描述】:
我只想写一个简单的文本文件:
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
我不明白问题是什么......
【问题讨论】:
标签:
c++
file
stream
floating-point
byte
【解决方案1】:
我认为问题可能在于 BYTE 类型可能是 char 的 typedef。如果是这种情况,那么每当您尝试将 BYTE 写入流时,它将打印与该字节相对应的 ASCII 字符,而不是该字节的数值。请注意,字符 - 和 7 对应于 ASCII 值 45 和 55,例如。
要解决此问题,您需要做两件事:
- 在将它们写入文件之前,将您正在写入的 BYTE 类型转换为 int 或 short 等整数类型。这会强制流写入数值而不是字符。
- 在您输出的所有数据之间输出一些空格。现在所有内容都在流血,因为没有空格,这使得内容更难阅读。
希望这会有所帮助!
【解决方案2】:
BYTE 只不过是 unsigned char 的别名。默认情况下,当您在流中输出 char 时,会将其转换为其 ASCII 字符。在ASCII表中,字符45是'-',字符55是'7'。
试试这个:
test << var << (int)var2[0] << (int)var2[1];