微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决解析文件时可以在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并将其传递给例程进行解析(在这种情况下,避免传递副本)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?