我最近了解了std::string_view,以及它如何比分配字符串快得多,所以我尽可能用它来代替std::string。
有没有一种方法可以优化循环,逐行解析文件,改为使用std::string_view?
这是我正在处理的代码。
std::string line;
// loop until we find the cabbage tag
while (std::getline(csd, line))
{
//DO STUFF
if (line.find("</STOP>") != std::string::npos)
break;
}
您要查找的是mmap
,它允许您在不复制文件数据的情况下读取文件数据。从C++中的流中读取总是会复制数据。然后,当然,您可以使用std::string_view
指向mmap
显示的数据,并执行您喜欢的所有操作。
否。string_view
是:
- 某些存储的常量视图,因此无法读取
string_view
- 不拥有存储器,而是";指";所以
getline
没有地方放它读取的信息
但是,一旦将数据读取到string
中,就可以生成string_view
并将其传递给例程进行解析(在这种情况下避免传递副本(。