免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4014 | 回复: 2
打印 上一主题 下一主题

[C++] 用C++动态打开多个文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-06 20:17 |只看该作者 |倒序浏览
由于我目前正在编一个对文本中的行进行排序的程序,而文本又非常的大(500MB以上),所以在处理的时候,只有将以上文件中的内容一块一块地读入字符串向量中(我是每次读300000行),然后对该字符串向量中的字符串排序,并把排好序的字符串向量中的字符串输出到动态创建的文件中,这样我就得到了多个这样的内容排好序的文件(文件名前面和原来的文件名一样,只是文件名的末尾多了一个整数字符,如源文件名为filename,那么我动态生成的文件名就为filename1, filename2...),这里我用了一个整形变量nosFile(number of sorted files)记录了程序动态创建的内容排好序的文件数。这时我就可以对这些排好序的小文件进行处理了,具体方法是一开始从所有内容排好序的文件中读取一行并将其加入vector<sfstruct>中(注:这里的sfstruct是一个结构体,里面有一个字符串变量和一个整形变量,其中字符串变量用来存储所读到的行,整形变量用来指示是从第几个文件中读出的),然后我就可以个对vector<sfstruct>排序(当然这里我定义了一个比较函数,只比较结构体中的string),然后我就可以把最小的结构体取出,并将其字符串输出到最终文件中,并根据我取出的结构体中的整形变量的值来判断下一次应该从哪个文件中读取一行!这样我就得到了一个最后排好序的文件。
    但是我目前最大的障碍就是不知道如何利用我所定义的整形变量nosFile和源文件名这两个文件动态创建nosFile个文件输入流。注意这里是动态创建,因为我并不知道nosFile的值是多大,只有在程序运行后才能确定,也才能知道我所生成的临时文件的个数,这也就是我要打开的文件数!
    求大家帮忙解答一下!谢谢!!

论坛徽章:
0
2 [报告]
发表于 2006-07-06 22:15 |只看该作者
大家给点建议啊!

论坛徽章:
0
3 [报告]
发表于 2006-07-07 12:18 |只看该作者
已解决!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP