C++ 文件读 普通方式
第一种
std::ifstream ifs(filename, std::ios::binary);
std::string buffer;
if (ifs.is_open())
{
buffer.resize(ifs.seekg(0, std::ios::end).tellg());
ifs.seekg(0, std::ios::beg).read(&buffer[0], static_cast<std::streamsize>(buffer.size()));
return buffer;
}
第二种
std::ifstream ifs(filename, std::ios::binary);
rturn string((std::istreambuf_iterator<char>(ifs)),
(std::istreambuf_iterator<char>()));
第三种
ifstream ifs;
ifs.open(filename, std::ios::binary);//open the input file
stringstream strStream;
strStream << ifs.rdbuf();
return strStream.str();
以上省略判断文件打开失败情况和关闭文件.
根据测试(VS 2019 community)
二进制方式打开
read_0 time is : 282,039,300 number : 229799858
read_1 time is : 1,934,362,200 number : 229799858
read_2 time is : 1,656,453,300 number : 229799858
结论
预先分配足量内存是这三种方法时间消耗的关键. 使用 vector 代替 string 速度会提高 20%左右,使用文本方式打开速度会快于二进制打开.原因未知,但是对于二进制文件会出现截断情况.需要注意。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: 字节对齐介绍
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论