使用 ofstream 写入文件时出错
我在使用 ofstream 将数字写入文件时遇到问题。当我写数字时,有像这样的字符 █ 而不是数字。我写入文件的方法是:
byte _b = 20;
ofstream p_file;
p_file.open("txt.txt", std::ios::app);
p_file << _b;
有什么方法是正确的,或者只是使用另一种文件编写器方法?谢谢。
编辑:
p_file << (int) _b;
工作正常。谢谢
I have a problem with writing number to a file with ofstream. When i write numbers there are characters like this █ instead of numbers. The method i write to the file is:
byte _b = 20;
ofstream p_file;
p_file.open("txt.txt", std::ios::app);
p_file << _b;
Is there any way to be right, or just use another filewriter method? Thanks.
EDIT:
p_file << (int) _b;
works fine. Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我敢打赌
byte
是char
或其某种变体。在这种情况下,您将_b
设置为代码 20 的字符,该字符在 ASCII 中是控制字符。流输出将尝试输出字符而不是数字。如果你想获取数字,可以将其转换为另一个整数类型:
I bet that
byte
ischar
or some variant thereof. In that case you are setting_b
to the character with code 20, which in ASCII is a control character. The stream output will try to output the character not the number.You can cast it to another integral type if you want to obtain the number:
你的代码中的
byte
是什么?我假设它是unsigned char
的 typedef。注意 C++ 没有byte
作为数据类型。如果是,则
p_file
打印 ASCII 值为20
的字符。这就是您在文件中看到的内容。如果您希望它打印
20
,请执行此操作:或者,只需将
_b
的数据类型从byte
更改为int.
What is
byte
in your code? I assume it is a typedef ofunsigned char
. Note C++ doesn't havebyte
as data-type.If so, then
p_file
prints a character whose ASCII value is20
. That is what you see in the file.Do this if you want it to print
20
instead :Or, simply change the data type of
_b
frombyte
toint
.更改
为
byte
可能是在代码中的某处将 typedef 为char
。Change
to
byte
is probably typedef tochar
somewhere in your code.