是否可以将文件直接加载到std :: string_view?
直接=无需从stringstream创建代理std :: string。
这会使我的很多代码更快。
如果我了解您的要求,不。
std::string_view
指的是内存区域,但它不拥有该内存。这意味着std::string_view
requires存在另一个对象,该对象实际上持有它的char
对象指。
如果std::string_view
引用std::string
并且该字符串的生存期结束,那么std::string_view
现在实际上是一个悬空的引用/指针,尝试从中读取字符将导致未定义的行为。
请注意,std::string_view
可以引用char
之外的std::string
对象的连续序列,例如简单的char
数组或std::vector<char>
,但是无论引用的是什么,引用对象必须存在,至少要使用std::string_view
。
如果可以访问boost
,则可以将字符串视图指向data()
的boost::iostreams::mapped_file
。