逐字节比较两个文件
comparing two files byte-wise
在这里 http://www.cplusplus.com/forum/general/94032/我找到了一种按字节比较两个文件的好方法。但它增加了依赖性。我现在正在用Qt开发一个程序。在纯Qt中是否有类似优雅和/或相对快速的方式?或者有没有其他算法来比较Qt中的两个文件?我不坚持使用内存映射...
这是提升版本:
#include <iostream>
#include <algorithm>
#include <boost/iostreams/device/mapped_file.hpp>
namespace io = boost::iostreams;
int main()
{
io::mapped_file_source f1("test.1");
io::mapped_file_source f2("test.2");
if(f1.size() == f2.size() && std::equal(f1.data(), f1.data() + f1.size(), f2.data()))
std::cout << "The files are equaln";
else
std::cout << "The files are not equaln";
}
显而易见的方法可以快速制作,尽管我担心大多数标准库不会快速制作:
std::locale::global(std::locale::classic());
std::ifstream f1("test.1");
std::ifstream f2("test.2");
typedef std::istreambuf_iterator<char> isbuf_it;
if (std::equal(isbuf_it(f1.rdbuf()), isbuf_it(),
isbuf_it(f2.rdbuf()), isbuf_it())) {
std::cout << "The files are equaln";
}
else {
std::cout << "The files are not equaln";
}
这是否快可能取决于标准库优化分段迭代的算法。另一方面,由于读取内存在缓存中是最新的,并且只访问一次,因此即使没有任何分段优化,也很有可能在下一个页面易于读取之前处理每个页面。我已经很久没有对这种东西进行基准测试了......
相关文章:
- 两个文件使用彼此的功能-如何解决
- 结构包含在两个头文件中,这两个文件我都不拥有
- Levenshtein 两个文件的距离花费了太多时间
- 如何在c ++中以一行(水平)打印两个文件的数据?如给定的.这两种形式来自两个不同的文本文件
- 包括两个文件 C++ 之间的冲突
- 如何检测两个文件条目是否引用与Qt相同的物理文件系统?
- 比较两个文件夹的关系
- 连接两个文件时如何避免冗余尾随换行符?
- 在循环工作时,首先将两个文件读为向量,但仅次于迭代一次
- 比较两个文件中的两个中间人的最佳方法.C++
- 同时逐行阅读两个文件
- 包含两个C++文件的制作文件:如何选择要编译的文件
- 在 c++ 中对两个文件使用标头
- 同时阅读两个文件
- 如何连接两个文件夹/项目的生成文件,这两个文件夹/项目必须一起运行且独立运行
- 从其他两个文件中创建一个分类整数的文件
- C 程序处理两个文件,而不是一个文件
- 知道分割故障在哪里比较两个文件
- 如何计算两个文件中字符单词和行的总数,并将它们相加以得出总数
- 将相同数据写入两个文件的有效方法