【问题标题】: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

我不明白问题是什么......

【问题讨论】:

  • BYTE的定义是什么?

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


【解决方案1】:

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

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

  1. 在将它们写入文件之前,将您正在写入的 BYTE 类型转换为 int 或 short 等整数类型。这会强制流写入数值而不是字符。
  2. 在您输出的所有数据之间输出一些空格。现在所有内容都在流血,因为没有空格,这使得内容更难阅读。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

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

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多