假设我们已经将一个文本文件的内容读入了一个stringstream
via
std::ifstream file(filepath);
std::stringstream ss;
ss << file.rdbuf();
现在想逐行处理文件。这可以通过
for (std::string line; std::getline(ss, line);)
{
}
但是,考虑到ss
在内部缓冲区中包含文件的全部内容(并且我们可以string
通过 via获取此内容ss.str()
),上面的代码效率非常低。对于文件的每一行,都会进行内存分配和复制操作。
是否有可能提出一个以 aline
形式提供 s的解决方案std::string_view
?(随意使用其他机制来加载整个文件;我不需要通过 . 访问它stringstream
。)