ошибка записи в файл с ofstream - PullRequest
0 голосов
/ 26 августа 2011

У меня проблема с записью номера в файл с ofstream. Когда я пишу цифры, вместо цифр появляются такие символы, как █. Метод, который я записываю в файл:

byte _b = 20;
ofstream p_file;
p_file.open("txt.txt", std::ios::app);
p_file << _b;    

Есть ли способ быть правым или просто использовать другой метод filewriter? Спасибо.

EDIT:

p_file << (int) _b;

отлично работает. Спасибо

Ответы [ 3 ]

6 голосов
/ 26 августа 2011

Могу поспорить, что byte - это char или какой-либо другой вариант.В этом случае вы устанавливаете _b для символа с кодом 20, который в ASCII является управляющим символом.Выходной поток попытается вывести символ, а не число.

Вы можете привести его к другому целочисленному типу, если хотите получить число:

p_file << static_cast<int>(_b);
2 голосов
/ 26 августа 2011

Что такое byte в вашем коде? Я предполагаю, что это typedef unsigned char. Примечание. C ++ не имеет byte в качестве типа данных.

Если это так, то p_file печатает символ, значение ASCII которого равно 20. Это то, что вы видите в файле.

Сделайте это, если вы хотите напечатать 20 вместо:

p_file << (int)_b;    

Или просто измените тип данных _b с byte на int.

0 голосов
/ 26 августа 2011

Изменение

byte _b = 20; 

до

int _b = 20;

byte, вероятно, typedef для char где-то в вашем коде

...