Запись нескольких типов переменных в текстовый файл с использованием ofstream - PullRequest
0 голосов
/ 28 февраля 2011

Я просто хочу написать простой текстовый файл:

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 ]

1 голос
/ 28 февраля 2011

Я думаю, что проблема может быть в том, что тип BYTE может быть typedef для char.Если это так, то всякий раз, когда вы пытаетесь записать BYTE в поток, он будет печатать символ ASCII, соответствующий этому байту, а не числовое значение байта.Обратите внимание, что символы - и 7 соответствуют, например, значениям ASCII 45 и 55.

Чтобы исправить это, вам нужно будет сделать две вещи:

  1. Введите приведенные байтыПишем в какой-то целочисленный тип, например int или short, прежде чем записывать их в файл.Это заставляет поток записывать числовое значение, а не символ.
  2. Выводить некоторое количество пробелов между всеми данными, которые вы выводите.Прямо сейчас все течет вместе, потому что нет пробелов, что затрудняет чтение.

Надеюсь, это поможет!

0 голосов
/ 28 февраля 2011

BYTE - это просто псевдоним неподписанного символа.По умолчанию, когда вы выводите символ в потоке, он преобразуется в его символ ASCII.В таблице ASCII символ 45 - «-», а символ 55 - «7».

Попробуйте вместо этого:

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