VC需要替换一个大于64K的文本文件中所有的某字符串,有何方便的办法?

zero17 2003-08-27 01:50:20
小于64K的可以用CString解决,但是大于64K的话虽然可以用CFile::ReadHuge读出来却没有好办法进行处理。CFile也没有ReadLine之类的函数可以逐行读取,强行限定Read长度的话又怕将要替换的字符串切开了。
有什么好一点方便一点的办法?
...全文
116 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zero17 2003-08-27
  • 打赏
  • 举报
回复
多谢,结束。
baberson 2003-08-27
  • 打赏
  • 举报
回复
可以分段读呀,用CFile.
FileLen = cfile.GetLength();
while(cfile.GetPosition()<FileLen)
{
memset(pText,0,1025);
cfile.Read(pText,1024);
。。。。
}
cfile.Close();

不过分段读可能会产生半个汉字的问题。
yinzhaohui 2003-08-27
  • 打赏
  • 举报
回复
使用yndfcd(YNDFCD)很好的,你是不是不想自己编写寻找替换功能,想使用已有的吗?
程序员不要怕麻烦.
yndfcd 2003-08-27
  • 打赏
  • 举报
回复
这种东西最好用FileMapping

HANDLE hFile = CreateFile(....);//打开文件

HANDLE hFileMap = CreateFileMapping(...);//建立文件映射

LPSTR lpStr = (LPSTR)MapViewOfFile(hFileMpa,...);//将文件映射装入本程序的地址空间

然后可以象操作字符串一样对这个文件进行操作,系统自动为你管理内存的。用起来非常方便。
完成后不要忘了把文件映射从地址空间中移除(UnmapViewOfFile),还要关闭文件和文件映射(CloseHandle)。
duqiang2050 2003-08-27
  • 打赏
  • 举报
回复
CString可以存储大于64k的数据,我就用过256k的,就是操作起来特别慢。
要想快,还要直接操作内存
zero17 2003-08-27
  • 打赏
  • 举报
回复
我1和2都做了,感觉3太麻烦,所以来问问有啥简单的法子。:P
yinzhaohui 2003-08-27
  • 打赏
  • 举报
回复
你是不想自己编写吗?
1.分配一块内存空间,使用Gloable分配API可>64k
2.把你的文件读其中
3.自己编程完成替换
Semigod 2003-08-27
  • 打赏
  • 举报
回复
非得用VC吗? 用perl的话,1G 的数据一条语句就够了

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧