vs中没有fstream_如何读取和写入无符号字符到cstream中的fstream文件?

So far I have code to read an unsigned char from ifstream:

ifstream in;

unsigned char temp;

in.open ("RANDOMFILE", ios::in | ios::binary);

in.read (&temp, 1);

in.close ();

Is this correct? I also tried to write an unsigned char to an ofstream:

ofstream out;

unsigned char temp;

out.open ("RANDOMFILE", ios::out | ios::binary);

out.write (&static_cast(temp), 1);

out.close ();

But I get the following error for writing:

error C2102: '&' requires l-value

And this error for reading:

error C2664: 'std::basic_istream<_elem>::read' : cannot convert parameter 1 from 'unsigned char *' to 'char *'

It would be appreciated if someone could tell me what's wrong with my code or how I can read and write unsigned chars from fstream.

解决方案

The write error is telling you that you are taking the address of the temporary created by static_cast.

Instead of:

// Make a new char with the same value as temp

out.write (&static_cast(temp), 1);

Use the same data already in temp:

// Use temp directly, interpreting it as a char

out.write (reinterpret_cast(&temp), 1);

The read error will also be fixed if you tell the compiler to interpret the data as a char:

in.read (reinterpret_cast(&temp), 1);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值