解析文件时可以在getline中使用std :: string_view吗?

问题描述

我最近了解了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;
    }

解决方法

您要寻找的是unsigned int hello; unsigned int world; void fun ( void ) { hello++; world++; } -Ttext=0x1000 -Tdata=0x20000300 Disassembly of section .text: 00001000 <fun>: 1000: 20000637 lui x12,0x20000 1004: 200006b7 lui x13,0x20000 1008: 30462703 lw x14,772(x12) # 20000304 <hello> 100c: 3006a783 lw x15,768(x13) # 20000300 <__DATA_BEGIN__> 1010: 0705 addi x14,x14,1 1012: 0785 addi x15,x15,1 1014: 30e62223 sw x14,772(x12) 1018: 30f6a023 sw x15,768(x13) 101c: 8082 ret Disassembly of section .sbss: 20000300 <world>: 20000300: 0000 unimp ... 20000304 <hello>: 20000304: 0000 unimp ... fun: lui a2,%hi(hello) lui a3,%hi(world) lw a4,%lo(hello)(a2) lw a5,%lo(world)(a3) addi a4,a4,1 addi a5,a5,1 sw a4,%lo(hello)(a2) sw a5,%lo(world)(a3) ret ,它使您可以读取文件的数据而无需复制它们。在C ++中从流中读取将始终复制数据。然后,您当然可以使用mmap指向std::string_view所显示的数据,并执行您喜欢的所有操作。

,

不。 string_view是:

  • 有关某些存储的恒定视图,因此您无法读入string_view
  • 不拥有该存储,而是“引用”其他存储,因此getline无处放置读取的信息。

但是,一旦将数据读取到string中,就可以制作一个string_view并将其传递给例程进行解析(在这种情况下,避免传递副本)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...