24小时热门版块排行榜    

查看: 1845  |  回复: 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的回帖

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的回帖

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的回帖
相关版块跳转 我要订阅楼主 cw277 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见