解析文件时,我可以将std::string_view与getline一起使用吗



我最近了解了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并将其传递给例程进行解析(在这种情况下避免传递副本(。

最新更新