回首页 回首页 ◎ 设为首页  
◎ 收藏本站  
◎ 给我留言  
  
  首 页  C/C++教程  C++之父的FAQ  C/C++动向  C/C++源代码  C/C++误区  Unix/Linux  下载中心  乱七八糟  蚂蚁的Blog  
  当前位置:首 页 >> C/C++源代码 >> C/C++ 小程序 >> 文件分割合并器(加入图形界面)
最 近 更 新
[C++] 去除文件中重复的..
C++ Primer 第四版源代码
[C++] 不怕溢出的 sprintf
文件分割合并器(加入图..推荐
[C++] 简单垃圾回收器推荐
清除多余空格
[C++] dump file推荐
爱因斯坦阶梯问题
简单加密程序源代码
[C++] 最大公约数求解
最 新 推 荐
文件分割合并器(加入图..推荐
[C++] 简单垃圾回收器推荐
[C++] dump file推荐
热 门 排 行
简单加密程序源代码
爱因斯坦阶梯问题
C++ Primer 第四版源代码
[C++] dump file推荐
清除多余空格
文件分割合并器(加入图..推荐
[C++] 最大公约数求解
[C++] 简单垃圾回收器推荐
[C++] 去除文件中重复的..
[C++] 不怕溢出的 sprintf
站 内 搜 索

Web stdcpp.cn
关键词

搜索方式

搜索范围

精确匹配
广 告

文件分割合并器(加入图形界面)


来源:蚂蚁的 C/C++ 标准编程 作者:Antigloss 等级:强烈推荐
发布于2007-07-23 09:50 被读2936次 【字体:

    完全使用标准 C++ 编写的文件分割合并程序。采用面向过程的编程风格,也就是俗称的 C 风格。希望各路高手踊跃发言,指出其不足之处,提出整改意见、方案等。

2007-7-23 更新:

TODO:

1. 将标准 C++ 编写的程序中出错处理部分修改为抛出异常处理。[ 完成 ]
2. 让 gtkmm 编写的程序不显示控制台窗口,并捕捉其调用的标准 C++ 程序的输出。
3. 用 glademm 设计界面。
4. 让输入框只能输入合法数字。
5. ... ...

2007-7-2 更新:

使用 gtkmm 加了一个图形界面,调用使用标准 C++ 编写的程序。

点击下载源代码:文件分割合并程序(标准 C++)
点击下载源代码:文件分割合并程序(有图形界面)

标准 C++ 编写的程序的使用方法:

  分割: splitor -split -src 待分割文件 -size 分割大小(例如:2000, 20k, 2m, 1g)
  例如: splitor -split -src splitor.exe -size 100k

  合并: splitor -unite -src 待合并文件 -dst 合并为
  例如: splitor -unite -src splitor.exe -dst a.exe

直接在命令行中输入 splitor 可查看完整使用帮助。

TODO:

1. 将标准 C++ 编写的程序中出错处理部分修改为抛出异常处理。
2. 让 gtkmm 编写的程序不显示控制台窗口,并捕捉其调用的标准 C++ 程序的输出。
3. 用 glademm 设计界面。
4. 让输入框只能输入合法数字。
5. ... ...

本文版权归 蚂蚁的 C/C++ 标准编程 以及 作者 Antigloss 共同所有,转载请注明原作者和出处。谢谢。



相关专题:暂无相关专题

上一篇:清除多余空格
下一篇:[C++] 简单垃圾回收器

共有评论 13 条 网友评分 1分 查看全部评论

游客:arena-zp
评分:3
能分割上G的文件吗?
游客:arena_zp
评分:1
在我电脑上是 点开exe後一闪而过,
拖到cmd里面运行也不幸啊?
游客:antigloss
评分:0
可以分割约 (4 * 4294967294)G 的文件,每个分割碎片可以是 4G。

先打开 cmd,然后输入命令进行分割/合并。使用方法请参考本文。
游客:Cofyc
评分:5
thanks for sharing!
游客:Cofyc
评分:5
ostringstream oss;
oss << dst << '.' << cnt;

if ( chk_file( oss.str().c_str() ) ) {
     error("%s: file already exists.\n", oss.str().c_str());
}

---
这里为什么可以用ifstream对象检测oss.str().c_str() 的存在?
---
ostringstream oss;
oss << dst << '.' << cnt;
这里, ostringstream 对象oss是不是相当于在内存中写入输出文件?
游客:Cofyc
评分:5
while ( infile.read(buf, BUF_SIZE) ) {
                        outfile.write(buf, infile.gcount());
                }

                outfile.write(buf, infile.gcount());
这里是不是因为infile.read(buf, BUF_SIZE),如果剩下大小小于BUF_SIZE会返回错误,但仍然将剩下小于BUF_SIZE的字节读入了?
游客:antigloss
评分:0
1. 因为如果文件不存在,则创建不了 ifstream 对象。
2. oss << dst << '.' << cnt; 是为了生成 *.1, *.2 之类的文件名。
3. 对的。
游客:Cofyc
评分:5
namespace {
    const string maxsizeb("4294967296");                  // max supported size (in byte) for each part when in a 32-bit system
    const string maxsizek("4194304");                     // max supported size (in byte) for each part when in a 32-bit system
    const string maxsizem("4096");                        // max supported size (in byte) for each part when in a 32-bit system
    const string maxsizeg("4");                           // max supported size (in byte) for each part when in a 32-bit system
    const size_t BUF_SIZE = 4096;                         // buffer size
    const size_t MAX_NUM  = 4294967295u;        // biggest number size_t can hold when size_t is of 32-bit unsigned integer type
}

这是在global namespace 中定义吧? 与不加上namespace {
}对编译器来说是一样的吧?

-------
最近在认真看C++ Primer. 想把CPP学透. 非常感谢提供这个源程序.

查看全部评论

【发表评论】 评分:1分 2分 3分 4分 5分


验证码:

Powered By Www.Xydw.COM Ver1.14 管理
Copyright © 2005-2006 蚂蚁的 C/C++ 标准编程 All Right Reserved. XCMS
粤ICP备06014124号   站长:Antigloss