24小时热门版块排行榜    

查看: 1839  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

cw277

木虫 (正式写手)

[交流] 【求助】请问一下 c++有没有按位读取文件的方法或者语句? STL里有没有这样的功能? 已有5人参与

1.像matlab : I=fread(fid,N,'ubit1');  'ubit1' 是 按1bit 读取文件  

2. 能不能把文件读到一个vector里 ,怎么实现?

[ Last edited by cw277 on 2010-6-1 at 09:11 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

感谢生活让我慢慢学会控制自己的情绪,学会包容与忍耐,学会不再去期待
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)


resonant(金币+1):感谢参与。 2010-06-01 15:04:29
cw277(金币+1):谢谢!如果能举个例子, 把一个文件按字节读到vecotr里就更好 ! 2010-06-01 19:26:29
按位读取本身是不能实现的,即使是MATLAB也是假实现。方法是按字节读取,然后切分成位。所以C++、C也可以用同样的方法实现。

vector的话,可以读到一个buffer里,然后append到vector。
3楼2010-06-01 14:04:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

yalefield

金虫 (文坛精英)

老汉一枚


余泽成(金币+1):谢谢参与应助! 2010-06-01 08:59:35
cw277(金币+1):谢谢~~ 2010-06-01 19:25:29
按位读取?C/C++没有咯。
其实,文件存贮,按位的话,不论空间效率还是时间效率都是得不偿失的。

文件存贮,最好是按字节(Byte),或者按字(Word),这是基本单位。
实际程序读、写文件,最好是一大块数据。
例如,有一个数组,有100个元素,
那就一次(一个语句)写入文件,而不要一个一个地(100个语句)写入。
读也是一次(一个语句),一下子都读出来。

至于指针变量,你既不应该把它写入文件,也不应该从文件读出来。
你所能做的,是把指针所指的那个东西写入文件;
读出时,先准备好指针,再为指针分配变量,足够容纳你要读的那个东西,然后再读。

按照这个基本过程,一个矢量该怎么读写,你应该懂的。

[ Last edited by yalefield on 2010-6-1 at 10:18 ]
2楼2010-06-01 01:53:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)


wangen994(金币+1):感谢参与应助 2010-06-05 08:29:48
不明白楼主所谓的按字节读取是什么意思,不过对楼主来说一次读取一个字节和一次读取100个字节有什么区别呢?
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
4楼2010-06-02 09:20:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yalefield

金虫 (文坛精英)

老汉一枚

★ ★
余泽成(金币+2):谢谢分享经验!外国老板还是大方些,呵呵! 2010-06-02 09:55:10
引用回帖:
Originally posted by magic7004 at 2010-06-02 09:20:29:
不明白楼主所谓的按字节读取是什么意思,不过对楼主来说一次读取一个字节和一次读取100个字节有什么区别呢?

在现在的计算机系统上,

一次读取一个字节,和一次读取100个字节,确实没有区别,
因为现在都是“一大块一大块”地读取。这一大块,也许是512个字节咯。

但是,100次读取一个(相同或者不同的)字节,与一次读取100个字节,那还是有区别地咯。

缓冲技术也许能帮忙,不过,那是在读取连续字节,或者时间上连续。
如果一会儿读一个字节,一会儿再读一个字节,OMG,I'm going to kill U.

俺曾试过,用VC++ 1.5的CString处理英汉词典,大约2、3秒。
用一个本科生写的“慢四步”代码(名字是俺起的,因为它向前读1、2个字节,再后退3、4个字节),2、3个小时也没折腾完。

为了俺这几行代码,澳大利亚的小老板给了俺3000元。
5楼2010-06-02 09:41:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见