gpt4 book ai didi

c++ - 将整个文件读入线 vector 的最有效方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:48:54 25 4
gpt4 key购买 nike

我正在尝试找到一种更有效的方法来将整个文件读入一个 vector 行,定义为 std::vector<std::string> .

目前,我写的很幼稚:

std::ifstream file{filepath};
std::vector<std::string> lines;

std::string line;
while(std::getline(file, line)) lines.push_back(line);

但感觉好像push_back中的额外拷贝并且每行的 vector 重新分配将对效率极为不利,我正在寻找更现代的 c++ 类型的方法,such as using stream buffer iterators when copying bytes :

std::ifstream file{filepath};
auto filesize = /* get file size */;
std::vector<char> bytes;
bytes.reserve(filesize);
bytes.assign(std::istreambuf_iterator{file}, istreambuf_iterator{});

有什么方法可以将文本文件逐行读取到 vector 中吗?

最佳答案

有一种非常有趣且相对较新的方法 - 范围。您可以阅读 Eric Niebler 的非常有趣的文章:

Out Parameters, Move Semantics, and Stateful Algorithms关于快速 getlines 替代方案

Input Iterators vs Input Ranges

关于c++ - 将整个文件读入线 vector 的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32961898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com